这是我在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;
roumen.. 5
如果没有填充颜色的区域,则可以使用Pen.Mode
设置进行所有绘制pmXOR
.它将给出一些奇数点,其中线条交叉(例如红线与蓝色圆圈交叉),但是当你重新绘制红线时 - 它会消失.
只需添加:
Canvas.Pen.Mode := pmXOR;
如有必要 - 记住现有的Pen.Mode
并在完成绘图时恢复它.
如果没有填充颜色的区域,则可以使用Pen.Mode
设置进行所有绘制pmXOR
.它将给出一些奇数点,其中线条交叉(例如红线与蓝色圆圈交叉),但是当你重新绘制红线时 - 它会消失.
只需添加:
Canvas.Pen.Mode := pmXOR;
如有必要 - 记住现有的Pen.Mode
并在完成绘图时恢复它.