我试图在 android 中绘制一条非常细的线(小于一个像素粗)。我正在使用
Paint blackThin = new Paint();
blackThin.setStrokeWidth(0.1f);
blackThin.setColor(Color.BLACK);
初始化绘画对象。
这在 Android 2.2 中运行良好,但是当我在 4.2 中尝试时(我认为也是 4.1 - 我简单地测试了那个 - 我没有测试除 2.2、4.1.2 和 4.2 之外的任何其他版本)这些行当我画它们时不会出现。为了让它们出现在 4.2 中,似乎我必须将抗锯齿标志设置为 true。 (我试过了,线条出现了。)但我真的不想要那样,因为那样会模糊线条等等。
这是 Android 中的错误吗?除了打开抗锯齿之外,我还能做些什么来让它工作吗?
编辑:我也用 0.9 的像素大小进行了测试,问题是一样的。
感谢您的帮助!
最佳答案
如果你想要一条很细的线,使用setStrokeWidth(0)
,作为documentation说 在细线模式下将 0 传递给 stroke。
子像素绘图显然需要抗锯齿或其他解决方法。很有可能例如使用软件渲染,低于一个像素的线条总是绘制为细线,但使用硬件渲染(可能在 Android 4.2 中自动使用,但在 2.2 中不使用),行为发生变化,许多方便的功能消失。 (顺便说一句,这通常是绘制差异和奇怪故障的原因。)
关于android - 在 Android 4.2 中绘制小于一个像素粗的线条需要抗锯齿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115244/