Paint.setAntiAlias(false)没有效果?

4

我希望在Android的画布上绘制无反锯齿的文本。我想使用的字体文件是cour.ttf,我已将其从PC的C:\windows\fonts目录复制到我的应用程序的资产目录中。

我正在使用以下代码:

paint.setColor(Color.BLACK);
paint.setTypeface(Typeface.createFromAsset(getAssets(),"cour.ttf"));
paint.setTextSize(20);
paint.setAntiAlias(false);
canvas.drawText("ABCDE abcde 12345 -+/#.",100,100,paint);

setAntiAlias函数似乎没有任何效果。 这张图片显示了我的结果: http://oi47.tinypic.com/35253wo.png 第一行是应用程序的屏幕截图,抗锯齿设置为false。 第二行是应用程序的屏幕截图,抗锯齿设置为true。 第三行是我期望得到的,它是使用相同字体在notepad.exe中制作的屏幕截图。
我做错了什么还是这是关闭抗锯齿的预期输出?我在这里想要实现的是像素化的未模糊文本。
非常感谢任何帮助。
编辑: 我还没有找到解决方案,但我发现了一些有趣的东西: 在我的Activity中添加android:hardwareAccelerated="false"可以清除它。显然,这在Android 4上默认开启。不过,还有一个(非常轻微的)阴影可见,我想要删除它。
禁用硬件加速的截图: http://oi49.tinypic.com/aayypj.png
1个回答

2

电脑和手机的像素密度不同,这就是文本外观差异的原因。你不能将手机渲染的文本与电脑上渲染的文本进行比较。我认为你的手机像素密度很高,所以你看不到抗锯齿效果。


嗨,感谢回复。我所拍摄的截图来自一款平板电脑(Acer Iconia Tab A200),其屏幕密度为MDPI。虽然比PC的密度高,但在正常观看距离下仍能分辨出单个像素。 - user1340450
1
你设置了 SUBPIXEL_TEXT_FLAG 吗?那是一个可能性。尝试在 Paint 中将其设置为 false。 - Ron
谢谢您的建议,我已经尝试过了,但似乎没有任何效果(true或false都有相同的结果)。您使用它时有任何效果吗? - user1340450
在处理字体尺寸时,设置为true会更准确。 - Ron
子像素标志为我在谷歌关键字方面带来了新的灵感,我发现了一些有关硬件加速的有趣信息;我已经编辑了我的问题。也许你有什么想法可以去除阴影效果?我尝试过paint.setShadowLayer,但它对测试没有影响。无论如何,我已经对目前的结果感到相当满意,所以为了帮助我找到解决方案,我会在一个小时后给你悬赏。 - user1340450

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接