图象怎么剪切?(50分)

  • 主题发起人 主题发起人 boby_v
  • 开始时间 开始时间
B

boby_v

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把一副BMP的一部分剪切成另一副图,怎么实现?
用COPYRECT总是把整副图缩放到另一副图中去,把IMAGE 的 STRETCH 设为FALSE 也不行,
我希望分辨率不变,剪切的图保持原样,请教各位!
 
你把CopyRect的第一个和第三个参数设为相同的Rect也不行吗?
 
var
W, H: Integer;
Img: TImage;
begin
Img := TImage.Create(Self);
Img.Width := ARect.Right - ARect.Left + 1;
Img.Height := ARect.Bottom - ARect.Top + 1;
Img.Parent := nil;
Bitblt(Img.Canvas.Handle, 0, 0, Img.Width, Img.Height,
ABitmap.Canvas.Handle, ARect.Left, ARect.Top, SRCCOPY);
Clipboard.Assign(Img.Picture);
Img.Free;
end;
 
var
Bitmap: TBitmap;
MyRect, MyOther: TRect;
begin
MyRect := Rect(10,10,100,100);
MyOther := Rect(10,111,100, 201);
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:/windows/tartan.bmp');
Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack);
Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect);
Bitmap.Free;
end;
 
var
SrcBmp, DestBmp: TBitmap;
SrcRect: TRect;
begin
SrcRect := Rect(20, 20, 100, 100);
SrcBmp := TBitmap.Create;
DestBmp := TBitmap.Create;
try
SrcBmp.LoadFromFile(SrcBmpFileName);
DestBmp.Width := SrcRect.Right - SrcRect.Left;
DestBmp.Height := SrcRect.Bottom - SrcRect.Top;
DestBmp.Canvas.CopyRect(DestBmp.Canvas.ClipRect, SrcBmp.Canvas, SrcRect);;
DestBmp.SaveToFile(DestBmpFileName);
finally
SrcBmp.Free;
DestBmp.Free;
end;
end;
 
多人接受答案了。
 
后退
顶部