如何擦除IMAGE上面绘制的图案?
就像系统画图程序哪样的橡皮擦一样
如不能实现哪样,擦除刚绘制上面的图形,如直线,也可以!

解决方案 »

  1.   

    画线的时候,以xor方式再画一次就是恢复了
      

  2.   

    擦出,还是容易的吧!像楼上的的xor方式划线,就可以
    另外,简单点,Canvas.Brush.Color := clwhite;
    canvas.fillrect(clientrect);不也可以?
      

  3.   


    在原来的位置,用pmNot模式重新画一下,就可以擦除上一次的图像
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Image1.Canvas.LineTo(100,100);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Image1.Canvas.Pen.Mode := pmNot;
      Image1.Canvas.MoveTo(0,0);
      Image1.Canvas.LineTo(100,100);
    end;
      

  4.   

    推荐一个代码:DrawTool画几何图行源码C#虽然是C#的代码,但可以参考一下思路。将每个图像也理解成控件,擦除的时候就是拿掉控件。绘制的时候就是按添加的先后摆放。
      

  5.   

    这是我的画图代码,我就是希望如果画错了,能完全地在BMP上擦除,重画、
    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
     Tag:=1; //置位
    image1.Canvas.MoveTo(X,Y); //将Pen的位置移到当前
    image1.Canvas.Pen.Width := 6;
    image1.Canvas.Pen.Color :=clred;
    end;
    procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
     if Tag=1 then
    begin
          Image1.Canvas.LineTo(x,y);
    end;
    end;
     procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
     Tag:=0; //标志位
    end;
      

  6.   

    我在BMP上,是随便画的,担心画不好的时候,想重新画我现在画不好,只有关闭程序,所以想请教一下大家,能不能擦除。
      

  7.   

    xor模式就是实现橡皮筋的基本办法
      

  8.   

    xor怎么用,能不能举个例子看看。
      

  9.   


    xor也是一种模式而已,下面的pmNot也是一样,TPen和TBrush都有这类属性
    在原来的位置,用pmNot模式重新画一下,就可以擦除上一次的图像
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Image1.Canvas.LineTo(100,100);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Image1.Canvas.Pen.Mode := pmNot;
      Image1.Canvas.MoveTo(0,0);
      Image1.Canvas.LineTo(100,100);
    end;
      

  10.   

    那就画之前把bmp在内存里保存一份,要恢复直接取回覆盖到bmp
      

  11.   

    我要的效果,就是在IMAGE1载入一个BMP图片,然后在上面绘制,然后能擦除绘制的其中一部分,即不全擦掉
    擦掉的时候,背景不能被破坏