所有的Canvas类方法都使用浮点类型的坐标。为什么?据我所知,这些坐标表示在显示器上指向像素的数量。像素可以被分离吗?
一些设备支持亚像素精度。
在标准液晶屏幕上,一个像素实际上是三个亚像素,一个红色、一个绿色、一个蓝色(Red Green Blue)。在亚像素级别渲染可以产生更锐利、更美观的图像。
举个简单的例子,与其在屏幕上指定一个白色的“RGB”像素的位置,我们可以通过使用屏幕上的两个像素来更接近地呈现略微不同位置上的白色“像素”。
考虑屏幕上的三个RGB像素。通过在像素二上点亮R、G和B亚像素来显示白色像素:
one two three
----- ----- -----
_ _ _ R G B _ _ _
然后将其与亚像素渲染进行比较:
one two three
----- ----- -----
_ _ B R G _ _ _ _
_ _ _ R G B _ _ _
_ _ _ _ G B R _ _
对于肉眼来说,以上所有东西看起来都是白色像素,但子像素渲染允许更好的像素控制。这种技术只照亮部分像素和相邻像素的部分,在"线条平滑"(抗锯齿)方面非常有效。
除了传统的RGB条形液晶屏幕,还有其他屏幕技术。例如,RGBG Amoled格式屏幕(三星Galaxy显示器)。