我用Timage 控件,想一次拷贝一块图片区域到Timage上,要拷贝很多小块的图片到Timage上,开始时Timage上是没有图片的,拷贝时我用的函数是Form1.Image1.Canvas.CopyRect(........);因为要拷贝图象到Timage上,所以我在代码中动态改变它的width和height 。但是每次复制一块图片上去后,都显示不出来啊,用repaint和refresh都不行啊。因为我是吧Timage放在scrollbox里面所以当CopyRect几次后,由于scrollbox的滚动条显示出来,这说明Timage的大小是在变化啊,但是图象为什么显示不出来呢??搞了两天了,就是不行,我都快晕死了,请教高手!!!谢谢!!裸体跪谢!!!!

解决方案 »

  1.   

    这就是那个考贝图象的代码
    变量说明:image1是目标控件,image2是源控件,MyRect1是image2上的一个区域,我就是要把image2上的MyRect1区域考贝到image1上,因为要考很多个区域,考贝到image1上是并列放在一起的。procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);//拖动结束
    begin
      if(CanDrop) then
      begin
        if(Form1.Image1.Height<(MyRect1.Bottom-MyRect1.Top))
          then Form1.Image1.Height:=MyRect1.Bottom-MyRect1.Top;
    //改变高度,让image1的高度能让所有的小区域全部显示
        Form1.Image1.Width:=Form1.Image3.Width+MyRect1.Right-MyRect1.Left;                                                                      
    //加宽,以足够容纳新拷贝来的区域
        Form1.Image1.Canvas.CopyRect(Rect(Form1.Image1.Width-(MyRect1.Right-MyRect1.Left),0,Form1.Image1.Width,Form1.Image1.Height),Form1.Image2.Canvas,MyRect1);
      end;
      CanDrop:=false;
    end;
      

  2.   

    如果需要,我可以把整个代码贴出来,
    我第一次用delphi 写程序,谢谢。我本来是用VC#的。
      

  3.   

    不要用TImage
    用TbitMap,处理完才使用TImage显示,这样该没问题吧?试一试看看http://lysoft.7u7.net
      

  4.   

    我再把问题说得明白一点,就是在一个image上抓出一小块一下块的图,放到另外一个image上,不是要叠加,是并列放开。问题是每次用Image.Canvas.CopyRect之后,目标image上都没有显示,不知道为什么。
    望大虾指点!或者提供一个什么解决方案。