如何在 Java中绘制一个体面的圆圈

我已经尝试使用方法 drawOval 具有相等的高度和宽度,但随着直径的增加,圆圈变得更糟。我能做些什么来拥有一个体面的圆圈,无论大小如何。我将如何在 java 或其他方法中实现抗锯齿

我已经尝试使用方法 drawOval 具有相等的高度和宽度,但随着直径的增加,圆圈变得更糟。我能做些什么来拥有一个体面的圆圈,无论大小如何。我将如何在 java 或其他方法中实现抗锯齿

61

事实证明,Java2D(我假设是你正在使用的)已经很擅长这个!这里有一个不错的教程:://www.javaworld/javaworld/jw-08-1998/jw-08-media.html

重要的线是:

graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                          RenderingHints.VALUE_ANTIALIAS_ON);
32

您可以设置渲染提示:

Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON);
18

有两件事可能会有所帮助:

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 的答案

7

当然,你设置你的半径,你需要什么:

@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);
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(713)
Ical/Apple日历集成
上一篇
SwashBuckle在错误时定义响应主体
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(7条)