gpt4 book ai didi

java - 简单的线条画

转载 作者:行者123 更新时间:2023-12-02 08:05:58 25 4
gpt4 key购买 nike

我正在尝试用java制作一个简单的线条绘制程序,我将屏幕上的每个像素存储在一个数组中以进行绘制。当用户拖动鼠标时,每个像素都设置为 1,然后我尝试迭代并在每对点之间绘制一条线。但是它没有正确绘制,有人可以看到这里的问题吗?

public void mouseDragged(MouseEvent m) {
screen[m.getX()][m.getY()] = 1;
drawOffscreen();
}

public void mouseReleased(MouseEvent e) {
end[e.getX()][e.getY()] = true;
}


int prex = -1;
int prey = -1;
public void paint(Graphics g) {
g.drawImage(offscreen, 0, 0, null);
for (int x = 0; x < screen.length; x++){
for (int y = 0; y < screen[0].length; y++){
if(screen[x][y] == 1){
if (prex != -1 && prey != -1 && !end[x][y]){
g.drawLine(prex, prey, x, y);
}
prex = x;
prey = y;
}
}
}

}

最佳答案

(我认为这是作业?如果是,请将其标记为作业)

我敢打赌没有人会清楚地知道“画得不正确”是什么意思。不管怎样,这是我能看到的问题之一。

我打赌你只存储了 1 行。然而,您存储和绘制的方式是有问题的。

您通过在“虚拟屏幕”上标记坐标来存储鼠标“传递”的坐标。但是,当您在屏幕上绘制它时,您并没有遵循鼠标经过的顺序。相反,您按照从上到下、从左到右的顺序绘制线条,这只会让您一团糟。

你可以考虑存储一个坐标列表,绘画时根据坐标进行绘画。

伪代码:

class Coordinate {  // there are some class in Java that already does that, 
//leave it to you to find out :)
int x;
int y;
}

List<Coordinate> theOnlyLine=....;
public void mouseDragged(MouseEvent m) {
theOnlyLine.add(new Coordinate(m.getX(), m.getY());
}

public void mouseReleased(MouseEvent e) {
theOnlyLine.add(new Coordinate(m.getX(), m.getY());
}

public void paint(Graphics g) {

int prevX = -1;
int prevY = -1;
for (Coordinate coordinate : theOnlyLine) {
if (prevX > 0 && prevY > 0) {
g.drawLine(prevX, prevY, coordinate.getX(), coordinate.getY());
}
prevX = coordinate.getX();
prevY = coordinate.getY();
}
}

关于java - 简单的线条画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com