比如说,我在CANVAS上绘有一条直线,现在想把他擦除,但不能用更新的方法,如Invalidate,因为晃得太厉害啦,我记得以前可以通过设置Canvas.CopyMode的属性来重绘即可擦除,象DrawFocusFrame一样,第二次绘制时就可擦除一个热点框.有谁知道怎么擦除一条线吗?谢谢大家
解决方案 »
- 请推荐一个可以每行设置不同颜色的编辑控件?
- 500分请教DELPHI MDI程序“工作区”的实现!!!
- 请问如何使用加密狗啊
- 菜鸟问题:如何让TADOConnection不弹出数据库登录对话框,通过什么方法在程序中设定 userid和password
- 在安装一个IMAGE控件时,提示“找不到文件DsgnIntf.dcu”文件,请问怎么解决。、
- 在安装Ehlib控件时,为何总是提示dbsumlst.dcu文件找不到?
- 关于TStringGrid显示的一个问题
- 邪门的更新资源-UpdateResource
- js生成的动态网页表格数据的提取---期待大牛们解答!感谢!
- 知道那有像OICQ窗口类似的控件下载?
- 如何叠加GIF格式图形?
- 根据带?的URL地址,怎样得到它的真实地址?
设置这个模式,你在同一个地方画一次出现直线,再画一次就把直线擦除了,明白了吗。不过这样的问题是可以通过帮助来解决的,要学会看帮助,这个才是最重要的
游戏编程中最常用到的方法!
type pLine=^recordLine;
recordLine=record
originP,finalP:TPoint;
lineColor:TColor;
next:pLine;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then
begin
drawing:=true;
image1.Canvas.Pen.Color :=colorbox1.Selected;
origin:=Point(x,y);
movePt:=origin;
……
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then
begin
if drawing then
begin
drawing:=false;
case myDrawStart of
myLine:
begin
new(itsLine^.next);
itsLine:=itsLine^.next;
itsLine^.originP:=origin;
itsLine^.finalP:=movePt;
itsLine^.lineColor:=image1.Canvas.Pen.Color;
itsLine^.next :=nil;
lastLine:=itsLine;
end; dLine^.next :=itsLine^.next ;
if itsLine=lastLine then
lastLine:=dLine;
dispose(itsLine); //這裡就可以刪除所選擇的任何綫
itsLine:=lastLine;