首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

DelphiX 實戰:TDIB.Ink 水墨/鋼筆畫風格化範例

     編輯:Delphi

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

效果預覽

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:反向模式,亮色邊緣變為白線,背景變黑(類負片素描)
  • Threshold (0~255):邊緣檢測閾值,越小線條越多越細,越大只保留強邊緣
  • 範例值 64 為中等靈敏度

效果差異

應用場景

  • **美術風格化**:即時將遊戲畫面/照片轉為手繪風
  • **邊緣提取預處理**:OCR、識別、測量前的二值化
  • **素描生成器**:使用者上傳照片自動生成素描
  • **UI 圖示簡化**:複雜圖片轉簡潔線條圖示
  • **藝術濾鏡**:App/軟體內建濾鏡選項

進階:動態閾值調整

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  DXPaintBox1.DIB.Assign(OriginalDIB);
  DXPaintBox1.DIB.Ink(OriginalDIB, CheckBox1.Checked, TrackBar1.Position);
  DXPaintBox1.Repaint;
end;

演算法原理(簡述)

類似 Sobel/Canny 邊緣檢測:計算像素梯度幅值,超過閾值判定為邊緣。Positive 決定輸出極性。屬於非參考透明度的圖像處理,輸出為高對比度二值圖像。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
模式線條色背景色視覺風格
Positive=True黑白鋼筆線稿、漫畫草稿
Positive=False白黑黑紙白筆、藍圖風格