簡體   English   中英

用鼠標繪圖

[英]Drawing with mouse

嗨,我需要幫助,我正在嘗試制作一個程序,用鼠標在窗口中繪制。 到目前為止,我已經知道單擊點時出現的位置,但是我需要添加拖動方法,以便在將鼠標拖動到頁面上時可以繪制內容。 有人可以看看我的代碼並在可能的地方幫助我嗎?

這是我的代碼:

import javax.swing.*;
import java.awt.event.*;
public class mouse {
    private static int x,y;
    private static draw object = new draw ();
    public static void main(String[] args){
        JFrame frame = new JFrame ("Mouse");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,400);
        frame.add(object);
        object.addMouseListener(new AL());
    }
    static class AL extends MouseAdapter{
      public void mousePressed(MouseEvent e){
        x = e.getX();
        y = e.getY();
        object.drawing(x, y);
      }
      public void mouseDragged( MouseEvent e) {
        x= e.getX();
        y= e.getY();
        object.drawing(x, y);
      }
    }
}

import javax.swing.*;
import java.awt.*;

public class draw extends JPanel {
    private static int x,y;
    public void drawing (int xx, int yy){
        x=xx;
        y=yy;
        repaint();
    }

    public void paintComponent (Graphics g){
        g.setColor(Color.black);
        g.fillOval(x, y, 10, 10);
    }
}

我的一個想法是,每當單擊鼠標並根據列表的大小進行繪制時,將每個鼠標坐標都添加到一個單獨的列表中,但是由於您使用的是鼠標拖動,因此可以只使用Path2D.lineTo(x, y)並為x和y坐標使用e.getX()e.getY() 在此之后,使用Path2D.moveTo(x, y)確保鼠標移動的每個像素都附加了行路徑(這可以確保每次移動看起來都不像一條直線,而是像一條直線向任意方向移動)重新“繪圖”)。 另外,一些技巧:

  1. 空隙mouseDragged在使用時通常效果更好mouseMotionAdapter ,因為從我的經驗,一般不會只出現在注冊事件mouseAdapter

  2. 由於這是一個繪圖程序,因此我個人會為您將來要使用的圓的大小設置一個變量,如果您實際上打算將其擴展為更大的尺寸(例如:g.fillOval(x,y,brushSize,刷子大小))。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM