我想做一個簡單的繪畫程序。我正在試圖製作一個像鉛筆這樣的工具,它允許自由繪畫。到目前爲止,我的代碼是:如何在行間填充空格?
NPaintMain
public class NPaintMain {
public static void main(String[] args) {
new NPaintWindow();
}
}
NPaintWindow
public class NPaintWindow {
private JFrame windowFrame;
private String windowTitle;
private NPaintCanvas canvas;
private Container easel;
public NPaintWindow() {
windowTitle = "NPaint - a simple paint program.";
windowFrame = new JFrame(windowTitle);
windowFrame.setDefaultCloseOperation(windowFrame.EXIT_ON_CLOSE);
windowFrame.setSize(500, 500);
windowFrame.setLocationRelativeTo(null);
canvas = new NPaintCanvas();
easel = windowFrame.getContentPane();
easel.add(canvas);
windowFrame.setVisible(true);
}
}
NPaintCanvas
public class NPaintCanvas extends JPanel {
double x, y, px, py;
ArrayList<Line2D> l;
public NPaintCanvas() {
new NPaintMouseEvents(this);
x = y = px = py = 0;
l = new ArrayList<>();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
for(Line2D ll: l){
g2d.draw(ll);
}
l.add(new Line2D.Double(px, py, x, y));
g.dispose();
repaint();
}
}
個NPaintMouseEvents
public class NPaintMouseEvents implements MouseListener,MouseMotionListener {
NPaintCanvas canvas;
public NPaintMouseEvents(NPaintCanvas canvas) {
this.canvas = canvas;
this.canvas.addMouseMotionListener(this);
this.canvas.addMouseListener(this);
}
@Override
public void mouseDragged(MouseEvent e) {
if(canvas.px == 0 && canvas.py == 0){
canvas.px = e.getX();
canvas.py = e.getY();
}
canvas.x = e.getPoint().x;
canvas.y = e.getPoint().y;
canvas.px = canvas.x;
canvas.py = canvas.y;
}
}
我在這裏的主要問題是,在拖動點繪製的,但他們有他們like this之間的空間。我想加入實線。任何幫助進一步的提示將不勝感激。
有許多的方式來實現這一目標。 1)在當前點和最後點之間繪製一個'Line2D'。 2)將所有點添加到一個'GeneralPath'並且每次添加一個新的點時繪製它。順便說一句:爲了更快地提供更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。爲此,需要將除main(String [])'類之外的所有類都還原爲默認值,並將其放在NPaintMain末尾,然後添加導入。 –
@安德魯·湯普森我不確定我是否有這個權利。 –
查看編輯的評論..噢,對,我沒有(從來沒有)密切關注代碼,直到有一個MCVE,編譯在我的IDE .. –