我已经尝试使用方法 drawOval 具有相等的高度和宽度,但随着直径的增加,圆圈变得更糟。我能做些什么来拥有一个体面的圆圈,无论大小如何。我将如何在 java 或其他方法中实现抗锯齿
事实证明,Java2D(我假设是你正在使用的)已经很擅长这个!这里有一个不错的教程:http://www.javaworld.com/javaworld/jw-08-1998/jw-08-media.html
重要的线是:
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
您可以设置渲染提示:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
有两件事可能会有所帮助:
将Graphics2D.draw(Shape)
与java.awt.geom.Ellipse2D
的实例一起使用,而不是Graphics.drawOval
如果结果仍然不令人满意,请尝试使用Graphics2D.setRenderingHint
启用抗锯齿
实例
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
Shape theCircle = new Ellipse2D.Double(centerX - radius, centerY - radius, 2.0 * radius, 2.0 * radius);
g2d.draw(theCircle);
}
有关setRenderingHint
的示例,请参见 Josef 的答案
当然,你设置你的半径,你需要什么:
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
Ellipse2D.Double hole = new Ellipse2D.Double();
hole.width = 28;
hole.height = 28;
hole.x = 14;
hole.y = 14;
g2d.draw(hole);
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(85条)