虽然不用 TWICImage 也可以方便实现图像的修剪, 但这是 TWICImage 的方式.
测试代码:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses Wincodec; procedure TForm1.Button1Click(Sender: TObject); var WicImg: TWICImage; Factory: IWICImagingFactory; Clipper: IWICBitmapClipper; {修剪图像的接口} r: WICRect; begin WicImg := TWICImage.Create; WicImg.LoadFromFile('c:\temp\test.jpg'); Factory := WicImg.ImagingFactory; Factory.CreateBitmapClipper(Clipper); r.X := WicImg.Width div 4; r.Y := WicImg.Height div 4; r.Width := WicImg.Width div 2; r.Height := WicImg.Height div 2; Clipper.Initialize(WicImg.Handle, r); WicImg.Handle := IWICBitmap(Clipper); Canvas.Draw(0, 0, WicImg); Clipper := nil; Factory := nil; WicImg.Free; end; end.