Graphics2D绘制一个白色背景 并包含一个矩形和5个椭圆形,并且均匀的分布在矩形周围,矩形和各个椭圆形用黑色实现连接起来,椭圆中显示文字测试 并进行抗锯齿处理 完整代码
时间: 2024-09-26 21:18:06 浏览: 24
在Java中,你可以使用`Graphics2D` API来创建这样的图形,结合`BufferedImage`来实现抗锯齿效果。以下是完整的示例代码:
```java
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class GraphicsDemo {
public static void main(String[] args) {
int width = 400;
int height = 400;
// 创建一个新的BufferedImage,设置透明背景并启用抗锯齿
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 矩形区域
Rectangle rect = new Rectangle(50, 50, 300, 200);
g2d.setColor(Color.BLACK);
g2d.draw(rect);
// 椭圆分布
int ellipseSpacing = 70;
for (int i = 0; i < 5; i++) {
Ellipse2D.Double ellipse = new Ellipse2D.Double(
rect.x + rect.width / 2 - ellipseSpacing * (i % 2 == 0 ? 1 : 0),
rect.y + rect.height / 2 - ellipseSpacing * Math.abs(i - 2),
ellipseSpacing, ellipseSpacing
);
g2d.setColor(Color.BLACK);
g2d.fill(ellipse);
g2d.drawString("测试", ellipse.getX() + ellipse.getWidth(), ellipse.getY() + ellipse.getHeight());
}
// 显示图像
JFrame frame = new JFrame("Graphics2D 示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JLabel(new ImageIcon(image)));
frame.pack();
frame.setVisible(true);
}
}
```
这个程序首先创建了一个带透明背景的`BufferedImage`,然后设置了抗锯齿渲染提示。接着画了一个黑色矩形和五个围绕它的黑色椭圆。每个椭圆都有一个文本标签"测试",并放置在椭圆中心。最后将图像显示在一个`JFrame`上。
阅读全文