【话题】Canvas.CopyRect应用问题
2009-08-28 10:28:54 来自:黄一冰 浏览数:26次
我想把image1的位图分为一个个矩形,逐步copy到位图bmp上,然后在image2上显示,可是用下面的代码,发现image2上一直只能显示image1的左上角部分,敬请高手指点!(iamge1和image2的stretch属性均为true)
procedure TForm3.Button5Click(Sender: TObject);
var
bmp:Tbitmap;
i,bmpheight,bmpwidth:integer;
begin
bmp:=Tbitmap.Create;
bmp.Height:=self.Image1.Height;
bmp.Width:=self.Image1.Width;
bmpHeight:=self.Image1.Height;
bmpWidth:=self.Image1.Width;
bmp.Canvas.Brush.Color:=clgray;
bmp.Canvas.Brush.Style:=bssolid;
bmp.Canvas.FillRect(rect(0,0,bmpwidth,bmpheight));
for i:=0 to bmpheight-1 do
begin
bmp.Canvas.CopyRect(rect(0,i,bmpwidth,i+1),self.Image1.Canvas,rect(0,i,bmpwidth,i+1));
end;
image2.Picture.Bitmap.Assign(bmp);
self.Invalidate;
bmp.Free;
end;
procedure TForm3.Button4Click(Sender: TObject);
begin
image1.Picture.Bitmap.LoadFromFile(ExtractFilePath(Application.ExeName)+'image\base.bmp');
end;
更多相关的话题
tuerjia回复于28日10点37分
very good! Thanks!
小白熊回复于28日10点49分
看错了。。
amy_zhao回复于28日11点00分
因为设置stretch,并不代表把位图实际尺寸拉伸了,所以你得到的还是原始的尺寸,所以画上去的就不是stretch后的图像
wenjp0429回复于28日11点12分
Delphi(Pascal) code //image2.Picture.Bitmap.Assign(bmp); Image2.Canvas.CopyRect(Image2.ClientRect, Canvas, Image1.BoundsRect);你的BMP图片有可能比 Image1大,他是拷贝不了大的
liweichao回复于28日11点21分
bmp.Canvas.CopyRect(rect(0,i,bmpwidth,i+1),self.Image1.Canvas,rect(0,i,bmpwidth,i+1));这句把bmp的图象改了,当然只有那么一点