DelphiX 元件面板第二個為 TDXDIB,其唯一屬性 DIB: TDIB。配合 TDXDraw 顯示處理結果。TDIB.Blur(Radius, Iterations: Integer) 以方框濾波迭代實現模糊,Radius 為核半徑,Iterations 為疊代次數。

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DIB, DXDraws, StdCtrls;
type
TForm1 = class(TForm)
DXDraw1: TDXDraw;
DXDIB1: TDXDIB;
Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
end;
var Form1: TForm1;
implementation
{$R *.dfm}
const ImgPath = 'C:\Temp\DelphiX.bmp';
procedure TForm1.Button1Click(Sender: TObject);
begin
DXDraw1.Surface.LoadFromFile(ImgPath);
DXDraw1.Flip;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
DXDIB1.DIB.LoadFromFile(ImgPath);
DXDIB1.DIB.Blur(32, 1); // 半徑 32, 1 次
DXDraw1.Surface.LoadFromDIB(DXDIB1.DIB);
DXDraw1.Flip;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
DXDIB1.DIB.LoadFromFile(ImgPath);
DXDIB1.DIB.Blur(32, 6); // 半徑 32, 6 次 (更強)
DXDraw1.Surface.LoadFromDIB(DXDIB1.DIB);
DXDraw1.Flip;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
DXDIB1.DIB.LoadFromFile(ImgPath);
DXDIB1.DIB.Blur(4, 2); // 半徑 4, 2 次 (輕微)
DXDraw1.Surface.LoadFromDIB(DXDIB1.DIB);
DXDraw1.Flip;
end;
end.
object Form1: TForm1
ClientHeight = 151; ClientWidth = 280
object DXDraw1: TDXDraw
Left = 8; Top = 8; Width = 265; Height = 105
Options = [doAllowReboot, doWaitVBlank, doCenter, do3D, doDirectX7Mode, doHardware, doSelectDriver]
end
object Button1: TButton; Left = 8; Top = 119; Caption = 'Original'; end
object Button2: TButton; Left = 76; Top = 119; Caption = 'Blur 32x1'; end
object Button3: TButton; Left = 144; Top = 119; Caption = 'Blur 32x6'; end
object Button4: TButton; Left = 213; Top = 119; Caption = 'Blur 4x2'; end
object DXDIB1: TDXDIB; Left = 240; Top = 16; end
end