转载 是 装载 么,否则看不懂。当是 装载 吧,测试下面代码没有发现问题procedure TForm1.FormCreate(Sender: TObject);
begin
img1.AutoSize:=True;
img2.AutoSize:=True;
img1.Picture.Bitmap.LoadFromFile('c:\1.bmp');
img2.Picture.Bitmap.LoadFromFile('c:\2.bmp');
end;procedure TForm1.btn1Click(Sender: TObject);
var
r:TRect;
begin
r:=Rect(20,20,100,100);
img2.Canvas.CopyRect(r,img1.Canvas,r);
end;
begin
img1.AutoSize:=True;
img2.AutoSize:=True;
img1.Picture.Bitmap.LoadFromFile('c:\1.bmp');
img2.Picture.Bitmap.LoadFromFile('c:\2.bmp');
end;procedure TForm1.btn1Click(Sender: TObject);
var
r:TRect;
begin
r:=Rect(20,20,100,100);
img2.Canvas.CopyRect(r,img1.Canvas,r);
end;
确认可以吗?在我电脑里不可以,我的系统是,D7+XP SP3 ,就抄的你上面代码
我的测试环境下,如果Image2装载了bmp,CopyRect没反应,不装载是有反应,没有做异常处理,就是用了CopyRect
确认可以吗?在我电脑里不可以,我的系统是,D7+XP SP3 ,就抄的你上面代码我是没有问题,源码带exe http://pan.baidu.com/s/1mv5F4
TImage.Canvas复制绘制TImage自身(比如边框、客户区域等)
TBitmap是一个Bitmap资源的封装,它的canvas就复制绘制这个BMP本身
TImage是一个容器,它里面装着一个TBitmap,TBitmap显示什么跟它的容器Image没有关系比如说,你有一个image控件,它的尺寸是400*400的(autosize:=false),然后加载一个 50*50大小的图片,
那么你看到的这个图片也就是50*50那个区域,但是这个image就是400*400的大小,image.Picture.Bitmap.canvas赋值绘制自身图像,因为它的高宽也就是50*50而已,
其余空白的区域就是image.canvans画的,你如果给这个image带个边框就容易看出来了
var
r:TRect;
begin
// 每个字母区域大约是55*55
r:=Rect(55*2,55*3,55*3,55*4); // 显示 U
//r:=Rect(55*2,55*2,55,55); // 这个就显示 H
img2.Canvas.CopyRect(r,img1.Canvas,r);
end;
睡觉去咯