java - 为什么像素是 float 的?

标签 java android

Canvas 类的所有方法都使用 float 类型的坐标。但为什么?据我所知,此坐标表示要指向显示器的像素数。像素可以分离吗?

最佳答案

一些设备支持亚像素精度。


在标准 LCD 屏幕上,一个像素实际上是三个子像素,一个红色、一个绿色、一个蓝色。 (红绿蓝)。亚像素级别的渲染允许更清晰、更好看的图像。

作为一个粗略的例子,不是在屏幕上指定一个白色“RGB”像素的位置,而是有机会通过实际使用屏幕。

考虑屏幕上的三个 RGB 像素。考虑通过点亮像素二上的 R、G 和 B 子像素来显示白色像素:

one   two   three 
----- ----- -----
_ _ _ R G B _ _ _

并将其与子像素渲染进行比较:

one   two   three
----- ----- -----
_ _ B R G _ _ _ _
_ _ _ R G B _ _ _ 
_ _ _ _ G B R _ _ 

对于人眼来说,所有这些看起来都像一个白色像素,但亚像素渲染允许更好地控制位置。这种仅对部分像素点亮,并点亮相邻像素部分的技术在“线条平滑”(抗锯齿)方面非常有效。

除了传统的 RGB 条纹 LCD 之外,还有其他屏幕技术。例如,考虑各种 RGBG Amoled 格式屏幕(三星 Galaxy 显示器)。

关于java - 为什么像素是 float 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22943393/

相关文章:

android - java.lang.ClassCastException : android. view.ViewGroup$LayoutParams 无法转换为 android.widget.Gallery$LayoutParams

android - 使用编辑文本更改密码

java - 使用泛型实现方法

java - 使用 JpaRepository 注入(inject) Autowiring 依赖项失败

java - 如何模拟 Springockito 模拟的行为?

Java/Maven 混淆 'Unsupported major.minor version 51.0'

Java - 列表到 HashMap<Long,Set<String>>

android - 减少可绘制对象和文本之间的间距

android - 即使添加 InstantTaskExecutorRule 后,android.os.Looper 中的方法 getMainLooper 未被模拟仍然发生

java - 反向遍历数组,不带负号