请教大侠,如何在delphi中实现对象素的控制,我在学习计算机图形学老师要求自己编程画线.
在C 语言中使用的是drawpixel或setpixel
在C 语言中使用的是drawpixel或setpixel
解决方案 »
- 怎么用代码点击按钮???
- 用savedialog将adoquery中的数据导出到excel中后,fastreport的预览就空了
- C/S中使用了数据模块是否就是三层结构了?这样有什么好处小弟我不懂,请大家多指点
- 一个非常反常的问题,百思不得其解。大家来试试
- 那里有fastreport得资料和程序下载啊?????
- 在Delphi下,一行字符大于256改怎么办?
- 造成数据库sql server 服务占用大量内存,如何解决?
- 关于treeview的大问题
- 高手幫忙:怎樣將菜單做成可拖動形式?
- 哪些 数据库支持 多用户查寻?
- 弟兄们,帮忙!
- 为什么我设了字间距后预览时有效果,可打印后没有效果?我用的是FastReport做报表
procedure DrawPoint(X,Y:Integer);
procedure DrawPoint(const Point:TPoint);
可以对坐标为(X,Y)的点进行设置。
当然常言道:没有最好只有更好,比如就可以从两边一齐划,可以减少
接近一半的计算,如有兴趣可以继续改进 Procedure BreshamLine( X0,Y0,X1,Y1:Integer; Color:Word );
Var
deltaX,deltaY:Integer;
dir,delta:LongInt;
e:Integer;
X,Y:Integer;
Begin
deltaX:=Abs(X1-X0); deltaY:=Abs(Y1-Y0);
If ( deltaX > deltaY ) Then
Begin
Y:=Y0;X:=X0;
e:=2*deltaY-deltaX;
If X1>X0 Then dir:=1 Else dir:=-1;
If Y1>Y0 THen delta:=1 Else delta:=-1;
While (X<>X1) Do
Begin
putpixel(X,Y,Color);
If e>0 Then
Begin
Inc(Y,delta);
Inc(e,2*(deltaY-deltaX));
End
Else Inc(e,2*deltaY);
Inc(X,dir);
End
End
Else
Begin
Y:=Y0;X:=X0;
e:=2*deltaX-deltaY;
If Y1>Y0 Then dir:=1 Else dir:=-1;
If X1>X0 THen delta:=1 Else delta:=-1;
While (Y<>Y1) Do
Begin
putpixel(X,Y,Color);
If e>0 Then
Begin
Inc(X,delta);
Inc(e,2*(deltaX-deltaY));
End
Else Inc(e,2*deltaX);
Inc(Y,dir);
End
End
End; Procedure PegasusLine( X0,Y0,X1,Y1:Integer; Color:Word );
Var
X, Y, dX, dY, sgn_dX, sgn_dY:Integer;
EXdy, EYdx :LongInt;
Temp1, Temp2, Temp3 :LongInt;
Begin
X:=X0; Y:=Y0; dX:=X1-X0; dY:=Y1-Y0;
If (dX>0)
Then sgn_dX:=1
Else sgn_dX:=-1;
If (dY>0)
Then sgn_dY:=1
Else sgn_dY:=-1;
dX:=dX*sgn_dY;
dY:=dY*sgn_dX;
EXdy:=0; EYdx:=0;
Repeat
PutPixel(X,Y,Color);
Temp1:=Abs(EXdy+dX-EYdx);
Temp2:=Abs(EYdx+dY-EXdy);
Temp3:=Abs(EYdx+dY-EXdy-dX);
If Temp1<Temp2
Then
Begin
Inc(Y,sgn_dY); Inc(EXdy,dX);
If Temp1>Temp3 Then
Begin
Inc(X,sgn_dX); Inc(EYdx,dY);
End
End
Else
Begin
Inc(X,sgn_dx); Inc(EYdx,dY);
If Temp2>Temp3 Then
Begin
Inc(Y,sgn_dY); Inc(EXdy,dX);
End
End
Until (X=X1) and (Y=Y1);
End;
procedure DrawPoint(X,Y:Integer);
procedure DrawPoint(const Point:TPoint);
可以对坐标为(X,Y)的点进行设置。
能告诉我在delphi中如何实现你的程序,我刚开始学习delphi ,我把你的程序粘帖在*.dif后运行出错,说putpixel没定义.现在我该怎么做,谢谢!
能告诉我在delphi中如何实现你的程序,我刚开始学习delphi ,我把你的程序粘帖在*.dif后运行出错,说putpixel没定义.现在我该怎么做,谢谢!
with Form1.canvas do begin
pen.Color:=clRed;
brush.Color:=clRed; //设置填充色为红色
Pixels[x,y]:=clRed; //这样可以画出一个像素的点,但这样的点太小
Ellipse(x-1,y-1,x+1,y+1); //这样画出的点就大多了
end;