IM編程一個小的畫圖程序。 但我有一個繪畫的錯誤。左,右,工作正確,但頂部,底部創建好奇的圖像。爲什麼?任何一個想法?我用java編程。 錯誤:(左正常,正確的錯誤)而不是ISNT,因爲mouseevent沒有獲得所有點。我畫的所有圓之間我實際得到的點。看代碼。繪圖程序錯誤
塗裝的代碼:
double m = 0;
int width = draggedX - mouseX;
int height = draggedY - mouseY;
if(draggedX - mouseX != 0){
m = (double) (draggedY - mouseY)/(double) (draggedX - mouseX);
}
if(width > 0){
for(int i = 0; i < width; i++) {
double x = mouseX + i;
double y = mouseY + (m * i);
g.fillOval((int) x, (int) y, 5, 5);
}
}
else if(width < 0){
for(int i = -width; i > 0; i--) {
double x = mouseX - i;
double y = mouseY - (m * i);
g.fillOval((int) x, (int) y, 5, 5);
}
}
else{
if(height > 0){
for(int i = 0; i < height; i++){
g.fillOval(mouseX, (int) i + mouseY, 5, 5);
}
}
else if(height < 0){
for(int i = -height; i > 0; i--){
g.fillOval(mouseX, (int) i - mouseY, 5, 5);
}
}
else{
g.fillOval(mouseX, mouseY, 5, 5);
}
}
鼠標事件有貓膩,他們並不總是遵循線性的進展。我不會使用橢圓形,而是在每個不同的事件點之間進行簡單的畫線。如果你需要讓線越厚,看看行程(或的BasicStroke尤其是) – MadProgrammer
@MadProgrammer:這應該是一個答案,它肯定不是由喬尼提供的答案要好得多。 –
@HovercraftFullOfEels一直在尋找一個例子,我知道我做這件事情之前幾次 – MadProgrammer