将drawOval圆转换为x,y坐标

时间:2015-10-02 19:34:14

标签: java arrays drawing store geometry

我想将绘制的圆转换为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);

1 个答案:

答案 0 :(得分:0)

  

我必须稍后以图像格式存储数组

这是什么意思?点阵列不是图像。

如果您想知道屏幕上绘的是什么,那么您可以:

  1. 创建面板的BufferedImage。请参阅Screen Image以获得简单的方法。

  2. 然后,您可以一次迭代BufferedImage一个像素。如果像素的颜色不等于面板背景的颜色,那么这意味着你在那里画了一些东西。因此,您将该像素的x / y值保存在ArrayList中。