即时更改 Graphics32 的 TImgView32 的重采样内核

Changing Graphics32's TImgView32's resampler kernel on the fly

我想即时更改 Graphics32 的 TImgView32 的重采样内核。 但是没有明显的区别。这是代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ImgView321.Bitmap.LoadFromFile('1.bmp');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ImgView321.Scale := ImgView321.Scale*2;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ImgView321.Scale := ImgView321.Scale/2;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ImgView321.Bitmap.ResamplerClassName := 'TKernelResampler'; 
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  ImgView321.Bitmap.ResamplerClassName := 'TNearestResampler'
end;

当您选择 'TKernelResampler' 时,指定使用的内核很重要。默认为 TBoxKernel,其结果与 'TNearestResampler'

几乎相同

其实视觉上是一样的,只是计算方式不同

尝试使用'TCubicKernel'或'TLanczosKernel'。要获得更多控制,您还可以选择 'THermiteKernel' 或 'TAlbrechtKernel',它们有两个控制参数(而不是只有一个)。