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

DelphiX 實戰:TDIB.DrawMono 單色轉換效果範例

     編輯:Delphi

TDIB.DrawMono 將來源圖像轉換為雙色(單色)圖像,指定前景色與背景色,常用於生成位圖字型、圖示遮罩或特殊視覺風格。本文提供以文字繪製為素材的完整範例。

效果預覽

DrawMono 效果示意圖

核心程式碼

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DIB, StdCtrls;
type
  TForm1 = class(TForm)
    DXPaintBox1: TDXPaintBox;
    Button1: TButton; // 執行單色轉換
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;
var Form1: TForm1;
implementation {$R *.dfm}
const c1 = clBlack; c2 = clLime;
var w, h: Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  w := DXPaintBox1.ClientWidth;
  h := DXPaintBox1.ClientHeight;
  DXPaintBox1.DIB.SetSize(w, h, 24);
  DXPaintBox1.DIB.Fill(c1); // 黑底
  DXPaintBox1.DIB.Canvas.Brush.Style := bsClear;
  DXPaintBox1.DIB.Canvas.Font.Color := c2; // 綠字
  DXPaintBox1.DIB.Canvas.Font.Name := 'Arial Black';
  DXPaintBox1.DIB.Canvas.Font.Size := 36;
  DXPaintBox1.DIB.Canvas.Font.Style := [fsBold];
  DXPaintBox1.DIB.Canvas.TextOut(20, 10, 'DelphiX');
  DXPaintBox1.Repaint;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // DrawMono(Dest, X, Y, W, H, SrcX, SrcY, ForeColor, BackColor, TransparentColor)
  DXPaintBox1.DIB.DrawMono(DXPaintBox1.DIB, 0, 0, w, h, 0, 0, c1, c1, c2);
  DXPaintBox1.Repaint;
end;
end.

參數詳細說明

DrawMono(DestDIB, DstX, DstY, DstW, DstH, SrcX, SrcY, ForeColor, BackColor, TransparentColor)
  • 前景色:非透明像素顯示的顏色(範例中 c1=clBlack)
  • 背景色:透明區域填充顏色(範例中 c1=clBlack,同前景)
  • 透明色:來源圖中視為透明的顏色(範例中 c2=clLime,即綠色文字區域)

執行後,原本綠色文字區域變為黑色(前景色),其餘區域也變為黑色(背景色),形成純黑圖像;若將背景色設為 clWhite 則會得到黑字白底的單色圖。

應用場景

  • 生成單色圖示/游標遮罩
  • 文字/圖形輪廓提取
  • 列印優化(單色列印)
  • 特殊視覺風格(如終端機綠字效果)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved