JAVA绘图矩形

时间:2016-02-25 23:58:57

标签: java

所以我有这样的代码:

public class TestPane extends JPanel {

        private Rectangle selection = new Rectangle();
        private Point clickPoint;

        private BufferedImage tempimage;

        public TestPane() {
            try {
                tempimage = ImageIO.read(new File("/Users/droop//omega.jpg"));
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            MouseAdapter ma = new MouseAdapter() {

                @Override
                public void mouseDragged(MouseEvent e) {
                    int minX = Math.min(e.getX(), clickPoint.x);
                    int minY = Math.min(e.getY(), clickPoint.y);
                    int maxX = Math.max(e.getX(), clickPoint.x);
                    int maxY = Math.max(e.getY(), clickPoint.y);

                    selection.x = minX;
                    selection.y = minY;
                    selection.width = maxX - minX;
                    selection.height = maxY - minY;
                    repaint();
                }

                @Override
                public void mousePressed(MouseEvent e) {
                    clickPoint = new Point(e.getPoint());
                }

            };

            addMouseListener(ma);
            addMouseMotionListener(ma);
        }

        @Override
        public Dimension getPreferredSize() {
            return tempimage == null ? new Dimension(200, 200) : new Dimension(tempimage.getWidth(), tempimage.getHeight());
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g.create();
            int x = (getWidth() - tempimage.getWidth()) / 2;
            int y = (getHeight() - tempimage.getHeight()) / 2;
            g2d.drawImage(tempimage, x, y, this);
            if (selection.width > 0 && selection.height > 0) {
                g2d.setColor(new Color(0, 0, 255, 64));
                g2d.fill(selection);
                g2d.setColor(Color.BLUE);
                g2d.draw(selection);
            }
            g2d.dispose();
        }
    }

我要做的是:更改此代码,以便我可以使用按钮点击更改图片。所以我想创建我的TestPane并放置框架,但稍后点击按钮加载图像。 还有一个问题:有时图片太大而无法在TestPane上显示,所以我添加了scrools但鼠标点击的x和y坐标与绘制形状不同步。当滚动打开并且我单击鼠标时,矩形将被绘制在上方而不是确切的位置。 请帮忙

0 个答案:

没有答案