1。我目前的方法是在图形移动的过程中,以clwhite颜色输出原先来的汉字,这样可以达到目的,但是,有一个问题,那就是在移动的过程中将其它图形的文字给擦除了。
请大家给出个好意见!

解决方案 »

  1.   

    我原来也遇到过这样的事情,后来想是正常的,你输出的文字也是图形上面画,其他图片移动过来当然会像覆盖图片一样覆盖它,我后来就用label,输出文字,在文件中存储label表格,或者干脆用数据库存储这张label位置表就好了。
      

  2.   

    你要清楚的文字 是图形中本来就有的了 还是你自己画上去的??如果是本来就有的话 就相当于做photoshop里面的一个功能啦。。gz.
      

  3.   

    自己画的,然后想要移动,就像gis系统一样,
    我原来有个方法,将要移动的图片存储到另外一张image上面,然后移动,当把文字挡住后,在画上去
      

  4.   

    Canvas上的图形及文字都是画上去的,我现在就是通过坐标进行移动!
      

  5.   

    >>我自已画上去的
    就我知道的, 你要自己維護一個列表, 記錄自己畫上去的東西的信息, 然後, 重載 Image1 的 OnPaint 消息, 在重新畫一次!
      

  6.   

    列表有了,我没有重载onPaint,现在问题是:在图形移动过程中,不清除其它图形中的文字!
      

  7.   

    先保存原来图像的内容,移动后恢复,或者先把要覆盖的内容与移动图形做异或,移动再异或一次就恢复了。
    下面的代码能在image实现橡皮筋功能,希望有所帮助
    procedure TPICW.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    if (shift=[ssShift,ssleft]) then
    begin
    dra:=1;
    a.Left:=x;
    a.Top:=y;
    end;end;
    procedure TPICW.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    if dra=1 then
    begin
    a.Right:=x;
    a.Bottom:=y;
    image1.Picture.Bitmap.Canvas.Pen.Mode:=pmnotXor;
    image1.Picture.Bitmap.Canvas.Rectangle(b);
    image1.Picture.Bitmap.Canvas.Rectangle(a);
    b:=a;
    end;
    end;procedure TPICW.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    dra:=0;
    end;
      

  8.   

    可以用多个image重叠实现,image设成透明背景
      

  9.   

    我用做Gis的方法来实现比较好,就是用层的思路,也就是楼上说的用多个image控件来实现
      

  10.   

    如果是画的我觉得应该是onPaint事件