Graphics2D绘制一个白色背景 并包含一个矩形和5个椭圆形,并且均匀的分布在矩形周围,矩形和各个椭圆形用黑色实现连接起来,椭圆中显示文字测试完整代码
时间: 2024-09-26 12:17:57 浏览: 27
在Java中,你可以使用`Graphics2D`类以及相关的图形组件库来创建这样的场景。以下是一个简单的示例,展示了如何使用`BufferedImage`和`Graphics2D`来绘制这个结构:
```java
import java.awt.*;
import javax.swing.*;
public class GraphicsDemo {
public static void main(String[] args) {
int width = 400;
int height = 400;
// 创建一个白色的背景
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
// 矩形和椭圆形的位置
Rectangle rect = new Rectangle(75, 75, 150, 100); // 矩形位置和大小
int ellipseOffset = 50; // 椭圆与矩形边缘的距离
// 绘制矩形
g2d.setColor(Color.BLACK);
g2d.drawRect(rect.x, rect.y, rect.width, rect.height);
// 绘制5个椭圆并添加文本
for (int i = 0; i < 5; i++) {
Ellipse2D.Float ellipse = new Ellipse2D.Float(
rect.x + rect.width + ellipseOffset * i,
rect.y + rect.height / 2 - ellipseOffset * i,
ellipseOffset * 2, // 椭圆半径乘以2
ellipseOffset * 2
);
String text = "Test " + (i+1); // 文本内容
g2d.setColor(Color.BLACK);
FontMetrics metrics = g2d.getFontMetrics();
int textWidth = metrics.stringWidth(text);
int textHeight = metrics.getHeight();
g2d.drawString(text, ellipse.getX(), ellipse.getY() - textHeight);
// 连接矩形和椭圆
g2d.drawLine(rect.x + rect.width, rect.y + rect.height, ellipse.getX(), ellipse.getY());
g2d.drawLine(rect.x + rect.width, rect.y + rect.height, ellipse.getX() + ellipse.getWidth(), ellipse.getY());
g2d.drawLine(rect.x + rect.width, rect.y + rect.height, ellipse.getX(), ellipse.getY() + ellipse.getHeight());
g2d.draw(ellipse);
}
// 显示图像
JFrame frame = new JFrame("Graphics2D Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JLabel(new ImageIcon(image)));
frame.pack();
frame.setVisible(true);
}
}
```
这个代码首先创建了一个白色背景的图片,然后在其中绘制了矩形、椭圆形和文本。注意,这只是一个基本的示例,实际应用中可能需要处理更多细节,如抗锯齿等。
阅读全文