canvas画布解决1px线条模糊问题

1,675 阅读2分钟

物理像素呈现

物理像素在屏幕上是以网格的形式出现的,如下图所示。如果我们填充(2,1)到(5,5)的矩形,它们之间的整个区域(浅红色)落在像素边界上,所以得到的填充矩形将具有清晰的边缘。[像素占的是格子~~~ 吃鸽子肉可强身健体]

但是,如果设置1px的线条,画在(3,1)到(3,5)的坐标上,则可以得到第二个图像中的情况。实际要填充的区域(深蓝色)仅延伸到路径任一侧的像素的一半。必须渲染一个近似值,这意味着这些像素只是部分阴影,并导致整个区域(浅蓝色和深蓝色)填充的颜色只有实际笔触颜色的一半。[本来想占一个座,却霸道的坐到两个座位中间,每边还出现了嘤嘤~~~]

总结:以上就是解决1像素宽度的线条带来的模糊,解决办法是在定位的时候平移半个像素就可以。但是:对于宽度较宽的线条,每一半都是像素的整数,所以您需要一个位于像素之间(即(3,1)到(3,5))的路径,而不是像素的中间。[平移半个像素~~~]

应用实践

掌握了1px模糊问题&如何解决,于是乎在绘图中应用起来,打起锣来敲旗鼓。可是遇到了新问题,如下图所示。

带上眼镜看箭头的尾部~,坑死自己截完图才发现2哈了。注意这个蜡烛图有的走了歪路。追着问题想办法,蜡烛宽度存在浮动且被强制+.5,还存在这奇偶数~ 画蜡烛一定保持偶数再去加.5。这个想法似乎靠谱,哇哈哈完美看着一个个正直蜡烛~~~

植入:感觉这个社会越来越好了,大家都很懂时。男生都懂事,一有钱就想多照顾几个女生。女生也很懂事,知道男生没钱就不和这个男生在一起,免得他辛苦~~~ [反正我笑了]