我的目的就是。
Canvas.TextOut(10,10,'1')
然后,怎么才能将这个1擦掉呢?
不能用Image.Picture.LoadFromFile

解决方案 »

  1.   

    var
      vColor: TColor;
    begin
      vColor := Font.Color;
      Font.Color := Color;
      Canvas.TextOut(10, 10, '1');
      Font.Color := vColor;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Canvas.TextOut(22, 44, 'Hello');
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      SetTextColor(Canvas.Handle, $CCCCCC);
      Canvas.TextOut(22, 44, 'Hello');   
      SetTextColor(Canvas.Handle, 0);
    end;
      

  3.   

    楼上的想法很好!
    但是Delphi未提供这个方法
    可以使用FillRect方法实现目的
      

  4.   

    var
      vColor: TColor;
    begin
      vColor := Font.Color;
      Font.Color := Color;
      Canvas.TextOut(10, 10, '1');
      Font.Color := vColor;
    end;
      

  5.   

    这个好用,擦掉画布上的所有内容:
    image.Canvas.FillRect(image.Canvas.ClipRect);
      

  6.   

    如果把字符直接写在背景图像上,就毫无办法再擦掉它,
    因为,即使你用OCR(字符识别)技术找出字符位置,擦掉字符后,其背景也不可能再恢复,
    这样一来,仍然会看到字,只是字的颜色是你所用的擦去的颜色而已.最好的办法是写字时就考虑到要擦,把这些字所在的背景图像保留起来,
    要擦掉它,就是把背景图像覆盖上去就行了.还有一种办法(我常用),就是分层显示:
    把图像画在一层(即一个image1)上,字符写在另一层(image2)上,
    并将image2设置为transparent.要擦掉字符,就是把image2删掉就行了.