TWICImage 的 Width、Height 属性, 可以读取但不能赋值.
调整 TWICImage 的大小、比例, 可以通过 IWICBitmapScaler 接口.
//IWICBitmapScaler.Initialize 函数有四种比例变换的算法:
WICBitmapInterpolationModeNearestNeighbor = 0;
WICBitmapInterpolationModeLinear = $1;
WICBitmapInterpolationModeCubic = $2;
WICBitmapInterpolationModeFant = $3;
测试代码:
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;
Scaler: IWICBitmapScaler; {图像比例变换接口}
begin
WicImg := TWICImage.Create;
WicImg.LoadFromFile('c:\temp\test.jpg');
Factory := WicImg.ImagingFactory;
Factory.CreateBitmapScaler(Scaler);
Scaler.Initialize(WicImg.Handle,
WicImg.Width div 2, WicImg.Height div 3,
WICBitmapInterpolationModeFant);
WicImg.Handle := IWICBitmap(Scaler);
Canvas.Draw(0, 0, WicImg);
Scaler := nil;
Factory := nil;
WicImg.Free;
end;
end.