如何在Java中一次着色一个像素来绘制一条线?

时间:2018-10-14 06:26:03

标签: java graphics applet line rasterizing

我的目标是画线并存储到目前为止已着色的所有像素的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并不陌生,所以这是我想得到自己想要的最好的产品。如果需要,我很乐意提供进一步的解释。

0 个答案:

没有答案