如何用Java制作地图绘制软件

如何用Java制作地图绘制软件,java,paint,Java,Paint,目前我正在用Java制作鼠标点击绘画程序。就像微软的Photoshop或绘画应用程序一样。 我知道,通过设置X轴和Y轴的边界,绘制正方形很容易。但我怎样才能用鼠标点击画出像非洲地图上的国家那样复杂的形状呢?有没有办法为这个设定界限? 谁能给我个暗示吗?非常感谢。 可以使用java图形进行绘制。尝试下面的简单代码 public class PaintCanves extends JPanel { private int oldX; private int oldY; p

目前我正在用Java制作鼠标点击绘画程序。就像微软的Photoshop或绘画应用程序一样。 我知道,通过设置X轴和Y轴的边界,绘制正方形很容易。但我怎样才能用鼠标点击画出像非洲地图上的国家那样复杂的形状呢?有没有办法为这个设定界限? 谁能给我个暗示吗?非常感谢。

可以使用java
图形进行绘制。尝试下面的简单代码

public class PaintCanves extends JPanel {

    private int oldX;
    private int oldY;

    public PaintCanves() {
        draw();
    }

    private void draw() {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                oldX = e.getX();
                oldY = e.getY();
            }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                getGraphics().drawLine(oldX, oldY, e.getX(), e.getY());
                oldX = e.getX();
                oldY = e.getY();

            }
        });
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setContentPane(new PaintCanves());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        frame.setVisible(true);
    }
}
这是我的测试结果。

注意:


调用面板时,它会清除已绘制的数据。需要使用一种技术来确保绘制点的安全,例如将绘制点添加到
集合中
或其他东西。

这不是提供代码的站点。分享你的尝试,如果你有一些确切的问题,我们将提供帮助。请访问tour。了解如何绘制一条直线。。。。请告诉我当你最小化然后恢复你的GUI时会发生什么?你的画还保留着吗?请不要给出误导性的建议,比如像上面那样使用
getGraphics()
。Swing中的绘图是被动的,应该在paintComponent方法中完成,正如绘制教程和面板重新绘制中所解释的那样。因此,它将丢失所有已绘制的数据。我只是试着向你展示如何用java来使用鼠标画画。是的,你却用错误的方式展示了原始海报!想一想,男人。为什么不继续在
集合中绘制点
。然后重新绘制重写的
repaint()
方法
“想一点人”
??--我知道如何用Swing画画——你可能会把我和原来的海报搞混了,但就我自己而言,我在这个网站上回答了11000多个关于Swing的问题,其中大部分都与Swing图形和绘画有关。如果你能改进你的答案,我很乐意取消我的反对票。如果你写一个像样的答案,我会把它改为赞成票。如果我这样做的话,我可能会绘制一个BuffereImage,然后在paintComponent方法中显示该图像,因为图像显示速度更快,但是使用
列表也可以。