亚像素图形运动

时间:2011-09-16 01:26:43

标签: java

我一直在阅读有关亚像素精度的信息,但无法找到实现此目的的方法。

问:如何在不出现口吃的情况下以非整数速度在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字段,当我尝试创建非常慢的移动(例如,基于系统时间)时,我看到矩形什么也不做,只是偶尔移动一个像素。

2 个答案:

答案 0 :(得分:2)

ButtonUITest提供了效果的并排比较。

image

在许多平台上,可以缩放显示以查看更多内容。在Mac OS X上, - - 8 /Developer/Applications/Graphics Tools/Pixie.app一样有效。在支持Java的其他平台上,Zoom是一个用于检查消除锯齿像素的便捷工具。

答案 1 :(得分:1)

还尝试设置以下渲染提示(以及消除锯齿):

g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);