android - 在 Android 4.2 中绘制小​​于一个像素粗的线条需要抗锯齿

标签 android canvas paint antialiasing stroke

我试图在 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/

相关文章:

java - ffmpeg 从修剪的视频中获取帧的时间

java - 自定义绘制 AWT 组件

java - 尝试遍历二维数组,但没有获得正确的值?

java - 线程异常 "AWT-EventQueue-0"错误

python - 通过 Selenium/Python 抓取 <canvas> 像素

java - : Lorg/apache/commons/codec/digest/DigestUtils 解析失败

java - Android 屏幕操纵杆问题

Android:如何使用 GSON 库解析 JSON 文件?

javascript - 检查图像是否有灰白色背景

html - Canvas Arc 或 QuadCurve OnMouseOver 功能可能吗?