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

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

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

61

事实证明,Java2D(我假设是你正在使用的)已经很擅长这个!这里有一个不错的教程:http://www.javaworld.com/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);
}

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

(1)
在 golang中定义一种新的时间类型
上一篇
dict'对象没有属性' 键
下一篇

相关推荐

  • java上传文件:如何使用Java实现文件上传

    Java上传文件是指使用Java程序将文件上传到Web服务器的过程。通常情况下,我们使用HTTP协议来实现文件上传,使用POST方法发送请求,并将文件作为请求体发送给服务器。下面是一个使用Java实现文件上传的示例代码:…

    2023-01-28 13:27:23
    0 94 84
  • java在线运行代码基础知识与实践

    示例示例Java在线运行代码是指使用Java语言编写的代码可以在网上直接运行,而不需要下载和安装任何软件。下面是一个简单的Java示例代码:…

    2023-01-06 14:36:41
    0 24 77
  • java实习生实习报告:Java实习生实践总结报告

    Java实习生实习报告是一种用来描述实习生在实习期间学习和实践Java技术的报告文件。它包括实习期间学习的Java基础知识、实践的Java项目、实习期间获得的技术收获以及实习期间的工作总结等内容。…

    2023-01-08 12:26:48
    0 85 81
  • java抛出异常什么意思如何捕获和处理异常

    Java抛出异常意味着在运行时发生了一个错误,导致程序不能正常运行。异常是一种特殊的对象,它提供了有关错误的信息,以便程序员可以查找并修复问题。…

    2023-01-06 05:07:07
    0 31 59
  • java数组必须定义长度吗:Java数组的定义和初始化

    示例示例不必要定义长度,可以使用动态初始化的方式来定义数组。代码示例:…

    2023-01-23 02:02:30
    0 11 14
  • java游戏引擎一次不同的游戏体验!

    Java游戏引擎是一种用于创建复杂的2D或3D游戏的软件开发工具。它使用Java语言,以及一系列的框架和库,为游戏开发者提供了一个基本的游戏开发平台。Java游戏引擎可以帮助游戏开发者节省时间和金钱,因为它们可以重复使用代码,而不必每次都重新编写代码。它们还可以提供一个可扩展的游戏开发框架,允许开发者更轻松地创建和管理游戏的各个方面。…

    2023-01-22 14:30:21
    0 58 54
  • java数组循环赋值:使用Java数组来实现循环赋值

    示例示例Java数组循环赋值是指通过循环语句来对数组中的元素进行赋值操作。代码示例:…

    2023-01-11 14:38:33
    0 76 25
  • java怎么打印Java 打印);

    Java中打印可以使用System.out.println()方法,下面是一个示例代码:public class {…

    2023-02-06 06:03:49
    0 47 12

发表评论

登录 后才能评论

评论列表(74条)