即时更改 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',它们有两个控制参数(而不是只有一个)。
我想即时更改 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',它们有两个控制参数(而不是只有一个)。