我的目标是画线并存储到目前为止已着色的所有像素的x和y坐标。我通过维护2D数组来实现这一目标
int graph[][] = new int[1000][1000] //assuming that the applet
//window is limited to 1000px X 1000px
说我想从(x1,y1)到(x2,y2)画一条线。我通过使用drawLine()方法作为
g.drawLine(x1,y1,x2,y2); //g is a Graphics object
这将导致给定坐标之间的直线。我想在图形矩阵中标记每个因此而变色的像素。所以如果(xk,yk)是彩色的,我会做
graph[xk][yk] = 1;
利用事实,对于x中每增加一个像素,我可以得到y中相应的变化(通过使用线的斜率),
int d = (y2-y1)/(x2-x1);
for(int i=x1;i<x2;i++)
{
graph[x1][y1]=1;
g.drawLine(x1,y1,x1++,y1+=d);
}
我遇到的一个明显问题是在处理浮点斜率时。每次斜率有小数部分时,它都会简单地截断数字并画出具有整数值斜率的线。结果是它绘制的线条之间不连续且不平滑。
我不能将d设为double / float,因为我无法将y1以浮点值递增,因为它是像素数。
我对Graphics和Applets并不陌生,所以这是我想得到自己想要的最好的产品。如果需要,我很乐意提供进一步的解释。