var 
  imgSource:TImage;
  imgDest:TImage;
我在做一个程序时候,我想问下一个函数
imgSource.Canvas.CopyRect(Dest, imgDesc.Canvas, Source);
//我反复的对这个CopyRect函数做测试发现这里的procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect);第二个参数Canvas我没有完全理解,想请各位帮我解释下第二个参数的用法,
用实例解释

解决方案 »

  1.   

    这有什么不好理解的?一个是目标Canvas,一个是源Canvas。简单例子,字符串复制,我要复制一个字符串中的几个字符到第二个字符串:  sDst:= Copy(sSource, 1, 10);这里的sDst相当于imgSource.Canvas, sSource相当于第二个Canvas.
      

  2.   

    Canvas相当于画布。你总得在画布上画东西吧?
      

  3.   

    imgSource.Canvas.CopyRect(Dest, imgDest.Canvas, Source); 
    //我是想问imgSource的变动成其他的是什么意思??
      

  4.   

    imgSource.Canvas这个在这里表示什么?
    帮个忙,我还不清楚
      

  5.   

    Canvas就是可以画图的对象
    例如:图片上可以画图、屏幕上可以画图、窗体上可以画图、打印机上可以画图(纸)
    CopyRect就是把一块拷贝到另外一块,可以在它们之间互相拷贝
      

  6.   

    怎么老是答非所问了,我真郁闷
    imgSource.Canvas.CopyRect(Dest, imgDesc.Canvas, Source); 
    这里的我认为这imgDesc.Canvas是新要所画图象的画布,但是imgSource是指the source canvas还是指什么?
    我曾经用Form代替过imgSource测试,感觉好奇怪 
      

  7.   

    CopyRect那个参数中的TCanvas是来源,所以你应该这么写
    imgDesc.Canvas.CopyRect(Dest, imgSource.Canvas, Source);
      

  8.   

    汗,这问题哦,这么讲吧,你要在桌面画图片,你就要知道桌面的句柄,你要在一个窗口上画图片,你就要知道窗口的句柄,同理,你要在ImgDest这个设备上画图,就要知道ImgDest的句柄(ImgDesc.Canvas),你不指定,系统怎么知道要画在桌面还是窗口还是哪里。当然Delphi的TCanvas是经过封装的,并直接就是句柄,但在系统底层都还是通过句柄来指定的,你可以看看TCanvas的源码,微软的MSDN,GetDC等方法的帮助
      

  9.   

    TForm(self).Canvas.TextOut(0,0,'hello');//在窗口上画个hello,这儿的Canvas是窗口Form的,不是ImgDest的。ImgDest.Canvas.Textout(0,0,'hello');//这个是在ImgDest上画的,不是在Form上画明白了么
      

  10.   

    用sgImage控件 //放大=========================
    procedure TForm1.SpeedButton1Click(Sender: TObject); 
    begin 
      sgImage1.ChangeScale(False, 1.5, sgImage1.Center); 
    end; 
    //缩小=========================
    procedure TForm1.SpeedButton2Click(Sender: TObject); 
    begin 
      sgImage1.ChangeScale(False, 0.5, sgImage1.Center); 
    end;
      

  11.   


    CopyRect就是说将你imgSource.Canvas的Source区域复制到imgDesc.Canvas的Dest上