的子像素图像渲染
问题描述:
我知道子像素的形状,如Rectangle2D.Double
,Ellipse2D.Double
和Line2D.Double
- 但我无法找到与亚像素精度绘制Image
/BufferedImage
信息。的子像素图像渲染
也许看起来像这样的东西 - Image2D.Double
?
有什么办法可以实现这个目标吗?
答
可以用AffineTransform绘制图像,该图像可以用浮点值指定缩放和平移。
(参见drawImage(Image, AffineTransform, ImageObserver)方法)
例如,为了绘制(10.5 10.5,)缩放到半尺寸和位置的图像,可使用:
Graphics2D g = ...
BufferedImage myImage = ...
AffineTransform t = new AffineTransform();
t.translate(10.5, 10.5);
t.scale(0.5, 0.5);
g.drawImage(myImage, t, null);
应确保适当RenderingHints已设置在Graphics2D对象上(为初学者设置KEY_ANTIALIASING
至VALUE_ANTIALIAS_ON
)。