Drawing line less than one pixel thick requires anti-aliasing in Android 4.2

 ̄綄美尐妖づ 提交于 2019-11-29 16:12:09

If you want a very thin line, use setStrokeWidth(0), as the documentation says Pass 0 to stroke in hairline mode.

Sub-pixel drawing obviously requires Anitaliasing or other workarounds. It is pretty possible that e.g. with software rendering, lines below one pixel are always drawn as hairlines, but with hardware rendering (which may be automatically used in Android 4.2 but not in 2.2), the behavior changes and many of the convenient features disappear. (This is often the reason for drawing differences and weird glitches, btw.)

You can't draw lines less than a pixel in width without anti-aliasing.

The whole point of anti-aliasing is to calculate what a pixel's colour would be, if a element doesn't completely fill the pixel (Like a line that's only a tenth of a pixel's width).

You could somewhat simulate it by drawing a lighter line, but that still wouldn't come close to a actually anti-aliased line.

Take a look at this image, for example:

It's really not possible to replicate the anti-aliased result by changing the line's colour.

I realise the lines in the example are > 1 pixel in width, but the same principle applies. The "darkness" of a pixel is calculated as a result of how much of the pixel is filled with the line. For that reason, a solid grey line won't work.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!