TDIB.Ink 將影像轉換為水墨畫或鋼筆線稿風格,支援正向/反向兩種模式與閾值控制,適合美術風格化、邊緣提取、素描生成。本文提供三種效果對比範例。

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DIB, StdCtrls;
type
TForm1 = class(TForm)
DXPaintBox1: TDXPaintBox;
Button1: TButton; // 載入圖片
Button2: TButton; // 正向水墨
Button3: TButton; // 反向水墨
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
end;
var Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const ImgPath1 = 'C:\Temp\DX.jpg';
begin
DXPaintBox1.DIB.LoadFromFile(ImgPath1);
DXPaintBox1.Width := DXPaintBox1.DIB.Width;
DXPaintBox1.Height := DXPaintBox1.DIB.Height;
DXPaintBox1.Repaint;
end;
procedure TForm1.Button2Click(Sender: TObject); // 正向:深色線條
begin
// Ink(SrcDIB, Positive: Boolean, Threshold: Byte)
DXPaintBox1.DIB.Ink(DXPaintBox1.DIB, True, 64);
DXPaintBox1.Repaint;
end;
procedure TForm1.Button3Click(Sender: TObject); // 反向:亮色線條
begin
DXPaintBox1.DIB.Ink(DXPaintBox1.DIB, False, 64);
DXPaintBox1.Repaint;
end;
end.
Ink(SrcDIB: TDIB; Positive: Boolean; Threshold: Byte)
| 模式 | 線條色 | 背景色 | 視覺風格 |
|---|---|---|---|
| Positive=True | 黑 | 白 | 鋼筆線稿、漫畫草稿 |
| Positive=False | 白 | 黑 | 黑紙白筆、藍圖風格 |