MKa*_*ser 3 delphi canvas line draw erase
这是我在stackoverflow中的第一个问题,我在发布之前到处搜索了所有内容,所以你们是我的最后一次机会
我正在使用Canvas和MoveTo(X,Y)方法在Delphi xe5中制作一个小程序,包括在足球场(TImage)上绘制线条,一切都很棒
但我的问题是,我想在绘制下一条线之前擦除更多线条,所以我不能同时拥有两条线,我该怎么做?
这是我用于绘制线条的代码片段:
procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
Line: Integer = 0;
begin
if Line = 0 then begin
Canvas.MoveTo(X,Y);
Line := 1;
Label1.Caption := IntToStr(x) ;
label2.Caption := IntToStr(y);
End
else if Line = 1 then begin
Canvas.LineTo(X,Y);
Line := 0;
Label3.Caption := IntToStr(x) ;
label4.Caption := IntToStr(y);
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果没有填充颜色的区域,则可以使用Pen.Mode设置进行所有绘制pmXOR.它将给出一些奇数点,其中线条交叉(例如红线与蓝色圆圈交叉),但是当你重新绘制红线时 - 它会消失.
只需添加:
Canvas.Pen.Mode := pmXOR;
Run Code Online (Sandbox Code Playgroud)
如有必要 - 记住现有的Pen.Mode并在完成绘图时恢复它.