在Tcanvas上画连续的点(50分)

  • 主题发起人 主题发起人 sw7309
  • 开始时间 开始时间
S

sw7309

Unregistered / Unconfirmed
GUEST, unregistred user!
在onmousemove中,如何对tcanvas进行操作,使得鼠标的移动轨迹在image上是连续的,就
象画笔画图程序中的钢笔工具一样,
我现在用pixel[x,y]=color的方法画的点是间断的
 
pixel只对单个象素作用,画出的点当然是间断的
拖动鼠标画线?如果我没理解错你的意思的话,试试如下方法:
利用image的canvas属性,设置相应的画笔风格,颜色,模式等等
begin
image1.Canvas.Pen.Color:=clred;
image1.Canvas.Pen.Style:=psdot;
image1.Canvas.Pen.Mode:=pmxor;
……
image1.Canvas.MoveTo(10,10);
Image1.Canvas.LineTo(x,y);
end;
 

只要不停的画很短的线
看上去就象是点了
 
二位可能没有明白我的意思,我的意思是想将鼠标的移动轨迹在tcanvas上画出来,而且必须
是连续的,效果可以见windows的画图程序是的铅笔工具,
我现在的代码
PROCEDURE TfrmMain.imgXyMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
BEGIN
imgXy.Canvas.Pen.Mode := pmCopy;
imgXy.Canvas.Pen.Style := psSolid;
imgXy.Canvas.Pixels[X, Y] := clRed;
// SetPixel(imgXy.Canvas.Handle, X, Y, ForColor);
// InValidate();
END;
END;
画出的轨迹是一系列间断的点,用setpixel也同样,但画图程序的铅笔工具画出的轨迹就是
连续的线
 
Canvas.Pen.Mode := pmCopy;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color:=clred;
Canvas.LineTo(x,y);
 
我们三个说的都是同一个意思
是你没看清楚啊
 
onmousedown:
Canvas.MoveTo(x,y);
onmousemove:
Canvas.LineTo(x,y);
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
后退
顶部