B
bbcock
Unregistered / Unconfirmed
GUEST, unregistred user!
为什么用以下代码放大图片2倍再缩小1/2图片可以恢复原样,但缩小1/2,再放大2倍,图片没法还原,这是怎么回事?
procedure TMDIChild.ZoomOut(const m,n:single);
var
Bmp,bmp1 : TBitmap;
begin
Bmp := TBitmap.Create;
Bmp.Assign(image1.Picture.Bitmap ); //继承你的位图信息,包括宽度和高度
Bmp1 := TBitmap.Create;
bmp1.PixelFormat :=pf8bit;
bmp1.Palette :=bmp.Palette ;
bmp1.Width :=trunc(image1.width*m);
bmp1.Height :=trunc(image1.height*n);
Bmp1.Canvas.StretchDraw(Rect(0,0,trunc(image1.width*m),trunc(image1.height*n)),bmp);
image1.Picture.Bitmap.Assign (bmp1);
Bmp.Free;
bmp1.free;
end;
procedure TMDIChild.ZoomOut(const m,n:single);
var
Bmp,bmp1 : TBitmap;
begin
Bmp := TBitmap.Create;
Bmp.Assign(image1.Picture.Bitmap ); //继承你的位图信息,包括宽度和高度
Bmp1 := TBitmap.Create;
bmp1.PixelFormat :=pf8bit;
bmp1.Palette :=bmp.Palette ;
bmp1.Width :=trunc(image1.width*m);
bmp1.Height :=trunc(image1.height*n);
Bmp1.Canvas.StretchDraw(Rect(0,0,trunc(image1.width*m),trunc(image1.height*n)),bmp);
image1.Picture.Bitmap.Assign (bmp1);
Bmp.Free;
bmp1.free;
end;