如何擦除lineto出来的线
- Delphi(Pascal) code
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; i,j:Integer; b:Boolean;implementation{$R *.dfm}procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if b then begin Form1.Canvas.MoveTo(0,0); Form1.Canvas.lineto(i,j);//此位置是想将上一次的线取消掉 Form1.Canvas.MoveTo(0,0); Form1.Canvas.Lineto(x,y);//画新线条 i := x;//记录坐标一边下次擦除 j := j; b:=True; end else begin Form1.Canvas.MoveTo(0,0);//初始化画一条线 Form1.Canvas.LineTo(x,y); i:=x; j:=y; end;end;procedure TForm1.FormCreate(Sender: TObject);beginb:=False;end;end.上面的程序的用以是当鼠标移动的时候将上一次坐标的线条取消掉画现在坐标的线条
我知道上面的程序不能实现其用意
假如说有背景 在不破坏背景的情况下 擦除线条
比如说背景是一张照片 当擦除线条之后照片不损坏
有什么办法么?
[解决办法]
擦拭原来线的时候,设置Canvas.Pen.Mode,有多种样式
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy,
pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge,
pmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor);
自己根据实际情况试试吧