比如 imgbg.Canvas.TextOut(400,10,'你好')
在imgbg 上写出"你好"!!
怎样把这样写出来的字擦除掉

解决方案 »

  1.   

    比较高效一点的方法可以考虑只重绘你TextOut的区域而不是全部重绘
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      r: TRect;
      bmp: TBitmap;
    begin
      bmp := TBitmap.Create;
      bmp.Width := 100;
      bmp.Height := 100;
      bmp.Canvas.Font.Assign(Font);
      bmp.Canvas.TextOut(20,20,'你好');
      BitBlt(Canvas.Handle,0,0,bmp.Width,bmp.Height,
        bmp.Canvas.Handle,0,0,NOTSRCERASE or MERGECOPY);
      bmp.Free;
    end;执行一次写入,再执行一次擦除!
      

  3.   

    如果有很多次反复 擦,写, 用textout的方法是不是会慢,  真接在面放Lable 是不是好一些
      

  4.   

    重画一下,然后再绘,你可以textout(0,0,空串);做在labele也不错;
      

  5.   

    学PhotoShop,做多个图层,直到满意再合并图层
      

  6.   

    InvalidateRect(Handle, ARect, True);
    或者FillRect,不过,需要计算文字的区域。