我一直在阅读有关亚像素精度的信息,但无法找到实现此目的的方法。
问:如何在不出现口吃的情况下以非整数速度在BufferedImage
之间移动Canvas
?
我可以在逻辑上理解这个过程是如何发生的 - 使用Anti-Aliasing进行轻微调整,但是我无法在Java中重新创建它。 (我有过使用Flash的经验,默认情况下会在大多数可视对象上创建这样的效果。)
注意:我之前提交了关于该主题的 question ,但在搜索了更多信息后,我仍然无法实现我所学到的内容。
如果不是太麻烦,一个简单的例子将非常感激。
提前致谢。
编辑:这就是我理解可以实现的效果,虽然它对我不起作用:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.draw(new Rectangle2D.Double(x, y, width, height));
在x和amp; x的两个和类似的int值之间没有明显的变化。 y字段,当我尝试创建非常慢的移动(例如,基于系统时间)时,我看到矩形什么也不做,只是偶尔移动一个像素。
答案 0 :(得分:2)
ButtonUITest
提供了效果的并排比较。
在许多平台上,可以缩放显示以查看更多内容。在Mac OS X上,⌘ - ⌥ - 8 和/Developer/Applications/Graphics Tools/Pixie.app
一样有效。在支持Java的其他平台上,Zoom
是一个用于检查消除锯齿像素的便捷工具。
答案 1 :(得分:1)
还尝试设置以下渲染提示(以及消除锯齿):
g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);