在image上画线后,怎么清除? ( 积分: 10 )

  • 主题发起人 主题发起人 xujianxie
  • 开始时间 开始时间
X

xujianxie

Unregistered / Unconfirmed
GUEST, unregistred user!
比如现在画了一条线
image1.canvas.MoveTo(10,10);
image1.canvas.LineTo(10,600);
怎么把这条线清除?而且image上的图片不变
 
比如现在画了一条线
image1.canvas.MoveTo(10,10);
image1.canvas.LineTo(10,600);
怎么把这条线清除?而且image上的图片不变
 
image1.reflesh;
 
不行,还是一样的
 
image1.canvas.Pen.Mode :=pmNotXor;
image1.canvas.MoveTo(10,10);
image1.canvas.LineTo(10,600);
 
在public部分加一个:procedure ClearCanvas;
procedure TForm1.ClearCanvas;
begin
with Canvas do
begin
Brush.Style:=bsSolid;
Brush.Color:=clWhite;
FillRect(ClipRect);
end;
end;
在需要的地方加上就可以了!
 
会不会把image里原先的图像给破坏了的
 
或者画线之前,先保存以下图象
BmpTemp:=TbitMap.create;
BmpTemp.assian(image1.picture)

要清除再把图画回去
image1.canvas.draw(0,0,BmpTemp)
大概是这样
 
如想在图片上画线又不损坏图片
可以用个PaintBox嘛放在Image上然后在PaintBox上面画
恢复用image.repaint就行了
 
Brush.Color:=clWhite;或者其他颜色(覆盖掉就是了)
如果怕原先的图形被破坏;woooo的方法估计行的通;就是麻烦一点
 
Woooo的方法虽然可行,但是屏幕会闪的,唉
 
画线前保存线上各点的颜色值到一个List of Record中,
清除时用保存的颜色填充这些点。笨办法。

不知道画图软件的Undo是怎么实现的,应该可以取反色叠加以达到消除效果的。
不过不知道颜色怎么计算。
 
为什么不再添加一个IMAGE控件,这个IMAGE放在原IMAGE上面,在这个IMAGE上画图,清除的时候也不会影响原来IMAGE的图像。
 
怕闪就不要用image,用paintbox
 
delphi 里的demo 你为什么 不看
 
后退
顶部