C语言中算法如下:
void DDAline(int x0,int y0,int x1,int y1)
{
int dx,dy,epsl,k;
float x,y,xIncre,yIncre;
dx=x1-x0; dy=y1-y0;
x=x0; y=y0;
if((abs(dx)>abs(dy)) epsl=abs(dx);
else epsl=abs(dy);
xIncre=(float)dx/(float)epsl;
yIncre=(float)dy/(float)epsl;
for(k=0;k<=epsl;k++)
{
putpixel((int)(x+0.5),(int)(y+0.5));
x+=xIncre;
y+=yIncre;
}
}
我用Pascal语言改编如下:
procedure TForm2.Button1Click(Sender: TObject);
var
dx,dy,epsl,k,x0,y0,x1,y1:integer;
x,y,xIncre,yIncre:real;
begin
form1.Image1.Picture.Bitmap:=Tbitmap.Create;
form1.Image1.Picture.Bitmap.Width:=form1.Image1.Width;
form1.Image1.Picture.Bitmap.Height:=form1.Image1.Height;
x0:=strtoint(edit1.Text);
y0:=strtoint(edit2.Text);
x1:=strtoint(edit3.Text);
y1:=strtoint(edit4.Text);
dx:=x1-x0;
dy:=y1-y0;
x:=x0;
y:=y0;
if(abs(dx)>abs(dy)) then epsl:=abs(dx)
else
epsl:=abs(dy);
xIncre:=dx/epsl;
yIncre:=dy/epsl;
for k:=0 to epsl do
begin
writeln(x+0.5,y+0.5);
x:=x+xIncre;
y:=y+yIncre;
end;
form1.Image1.Canvas.Brush.Style:=bsSolid;
form1.Image1.Canvas.Pixels[Trunc(x),Trunc(y)]:=clred;
end;end.
运行后,writeln(x+0.5,y+0.5)提示有误,请问如何改正?多谢!!!不知算法如何修改,请多多指教,老师追得急,请多多帮忙,万分感谢!!!
void DDAline(int x0,int y0,int x1,int y1)
{
int dx,dy,epsl,k;
float x,y,xIncre,yIncre;
dx=x1-x0; dy=y1-y0;
x=x0; y=y0;
if((abs(dx)>abs(dy)) epsl=abs(dx);
else epsl=abs(dy);
xIncre=(float)dx/(float)epsl;
yIncre=(float)dy/(float)epsl;
for(k=0;k<=epsl;k++)
{
putpixel((int)(x+0.5),(int)(y+0.5));
x+=xIncre;
y+=yIncre;
}
}
我用Pascal语言改编如下:
procedure TForm2.Button1Click(Sender: TObject);
var
dx,dy,epsl,k,x0,y0,x1,y1:integer;
x,y,xIncre,yIncre:real;
begin
form1.Image1.Picture.Bitmap:=Tbitmap.Create;
form1.Image1.Picture.Bitmap.Width:=form1.Image1.Width;
form1.Image1.Picture.Bitmap.Height:=form1.Image1.Height;
x0:=strtoint(edit1.Text);
y0:=strtoint(edit2.Text);
x1:=strtoint(edit3.Text);
y1:=strtoint(edit4.Text);
dx:=x1-x0;
dy:=y1-y0;
x:=x0;
y:=y0;
if(abs(dx)>abs(dy)) then epsl:=abs(dx)
else
epsl:=abs(dy);
xIncre:=dx/epsl;
yIncre:=dy/epsl;
for k:=0 to epsl do
begin
writeln(x+0.5,y+0.5);
x:=x+xIncre;
y:=y+yIncre;
end;
form1.Image1.Canvas.Brush.Style:=bsSolid;
form1.Image1.Canvas.Pixels[Trunc(x),Trunc(y)]:=clred;
end;end.
运行后,writeln(x+0.5,y+0.5)提示有误,请问如何改正?多谢!!!不知算法如何修改,请多多指教,老师追得急,请多多帮忙,万分感谢!!!
为
Image1.Canvas.Pixels[round(x+0.5),round(y+0.5)]:=clBlack;
试试
另外你的 form1.可省