我想将绘制的圆转换为x,y坐标并存储在数组或字符串中。我必须使用这个数组来存储我的帧中的图像文件。
private final DrawingPanel panel = new DrawingPanel();
private static int[] generateRandomValues(int maxX, int maxY,
int minSize, int maxSize) {
Random random = new Random();
int[] values = new int[3];
values[0] = random.nextInt(maxX);
values[1] = random.nextInt(maxY);
values[2] = Math.min(random.nextInt(maxSize) + minSize, maxSize);
return values;
}
static class Circle {
int x, y, width, height;
public Circle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public void draw(Graphics g) {
g.drawOval(x, y, width, height);
}
}
static class DrawingPanel extends JPanel {
List<Circle> circles = new ArrayList<>();
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (Circle circle : circles) {
circle.draw(g);
}
}
public void addCircle(Circle circle) {
circles.add(circle);
repaint();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(400, 400);
}
}
在我的main函数中,我编写了以下代码:
DrawingPanel drawPane = new DrawingPanel();
int[] circleValues = generateRandomValues(300, 300, 50, 150);
int x = circleValues[0];
int y = circleValues[1];
int width = circleValues[2];
int height = width;
Circle circle = new Circle(x, y, width, height);
drawPane.addCircle(circle);
答案 0 :(得分:0)
这是什么意思?点阵列不是图像。我必须稍后以图像格式存储数组
如果您想知道屏幕上绘的是什么,那么您可以:
创建面板的BufferedImage。请参阅Screen Image以获得简单的方法。
然后,您可以一次迭代BufferedImage一个像素。如果像素的颜色不等于面板背景的颜色,那么这意味着你在那里画了一些东西。因此,您将该像素的x / y值保存在ArrayList中。