BitmapFont icon indicating copy to clipboard operation
BitmapFont copied to clipboard

Bitmap smoothing

Open MiltonW opened this issue 10 years ago • 14 comments

Would be nice to have an option to set pixelsnapping and smoothing:

    _bitmap = new Bitmap(_bitmapData, PixelSnapping.AUTO, true));           

MiltonW avatar Oct 04 '14 13:10 MiltonW

@MiltonW what about my latest push? does it work as you prefer?

Beeblerox avatar Oct 05 '14 04:10 Beeblerox

I think so, but I seem to have a problem with Flash (and HTML5).

Linux/Neko target: bla

Flash: bla2

Same code, no Flash conditionals. This occurs when I have

     text_retro.size = 0.57;                                             

If I don't use that (or use a nice round integer) it looks just as good as the other targets. But if I then try to use text_retro.scaleX = 0.57 I get:

Invalid field access : set_scaleX

So I can't use the DisplayObject scaling anymore, which I would guess would not distort the image.

MiltonW avatar Oct 05 '14 09:10 MiltonW

let me think about it

Beeblerox avatar Oct 05 '14 09:10 Beeblerox

@MiltonW sorry that i haven't worked on it earlier, but i think i've fixed this issue. could you try updated code?

Beeblerox avatar Oct 10 '14 05:10 Beeblerox

No change I think. When I use HTML5/Flash I have the following behaviour:

     text_retro.size = 0.57;

size

     text_retro.scaleX = 0.57; text_retro.scaleY = 0.57;

scale

Since scaleX/Y seems to work it is not really a problem (for me anyway :) ). Can't reproduce the 'Invalid field access : set_scaleX' anymore.

PS. Does look a bit smoother now that I look at it, but I don't think it has to do with smoothing...

MiltonW avatar Oct 10 '14 08:10 MiltonW

strange. this is what i've got on flash target with latest code (with size set to 0.57): smoothing off smoothing_off smoothing on smoothing_on

Beeblerox avatar Oct 10 '14 09:10 Beeblerox

Yeah, a bit smoother, but what does it look like without size, and then scale it with scaleX/Y?

MiltonW avatar Oct 10 '14 09:10 MiltonW

it looks the same

Beeblerox avatar Oct 10 '14 09:10 Beeblerox

ok, here is another one fix. it looks like if you change Bitmap's bitmapData then smoothing isn't applying to it anymore. so we have to reapply smoothing

Beeblerox avatar Oct 10 '14 09:10 Beeblerox

It all doesn't seem to make a difference. All the smoothing does is smooth the jagged edges. The edges aren't there if I don't use size. So then I can use scaleX/Y and it stays crisp.

Try going fullscreen or even bigger and try to keep it this clean, no edges at all:

scale

Again, if I then comment scaling, and use size:

size

This is only on Flash/HTML5. Using size = 0.57 and scaling the entire stage by 3.

MiltonW avatar Oct 10 '14 10:10 MiltonW

oh, so you were scaling stage also. and i've tested without it. I guess it will be impossible to achieve this by using size then

Beeblerox avatar Oct 10 '14 10:10 Beeblerox

No, I'm not scaling the stage, that was just to make the difference more obvious.

MiltonW avatar Oct 10 '14 10:10 MiltonW

Hi there ,@Beeblerox Now how to disable smoohting ? I'm using this frok by @flowplay https://github.com/flowplay/BitmapFont angelCodeField.smoothing = false; // not working , it's always smoothing, I'm using pxiel font , so need to be non-smoothing p.s. when set scale to 2 , it's smoothing with white blurry border Thanks

FlashTang avatar Mar 31 '21 12:03 FlashTang

Just find a way to fix : Find this line _tilemap = new Tilemap(tileMapWidth, tileMapHeight, font.tileset); Add this.smoothing to the end _tilemap = new Tilemap(tileMapWidth, tileMapHeight, font.tileset,this.smoothing);

FlashTang avatar Mar 31 '21 13:03 FlashTang