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

DelphiX 實戰:TDIB.DrawDarken 變暗效果完整範例

     編輯:Delphi

TDIB.DrawDarken 以「變暗」混合模式將來源圖像繪製到目標上,類似 Photoshop 的「正片疊底」模式,適合陰影、壓暗處理。本文提供完整範例並搭配顏色對話框示範動態調整。

效果預覽

DrawDarken 效果示意圖

核心程式碼

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; // 純色填充後變暗
    ColorDialog1: TColorDialog;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  end;
var Form1: TForm1;
implementation {$R *.dfm}
var dib: TDIB;

procedure TForm1.FormCreate(Sender: TObject);
const ImgPath1 = 'C:\Temp\test.bmp';
begin
  Position := poScreenCenter;
  dib := TDIB.Create;
  dib.LoadFromFile(ImgPath1);
  DXPaintBox1.Width := dib.Width;
  DXPaintBox1.Height := dib.Height;
  Button1.Click; // 初始顯示原圖
end;

procedure TForm1.FormDestroy(Sender: TObject); begin dib.Free; end;

procedure TForm1.Button1Click(Sender: TObject);
begin DXPaintBox1.DIB.Assign(dib); DXPaintBox1.Repaint; end;

procedure TForm1.Button2Click(Sender: TObject); // 自身疊加變暗
begin
  DXPaintBox1.DIB.DrawDarken(DXPaintBox1.DIB, 0, 0, dib.Width, dib.Height, 0);
  DXPaintBox1.Repaint;
end;

procedure TForm1.Button3Click(Sender: TObject); // 選色填充後疊加變暗
begin
  if not ColorDialog1.Execute then Exit;
  DXPaintBox1.DIB.Fill(ColorDialog1.Color);
  DXPaintBox1.DIB.DrawDarken(dib, 0, 0, dib.Width, dib.Height, 0);
  DXPaintBox1.Repaint;
end;
end.

參數說明

DrawDarken(DestDIB, X, Y, SrcW, SrcH, Alpha)
  • 將來源 DIB(此處為 dib)以變暗模式繪製到目標 DIB(DXPaintBox1.DIB)
  • Alpha 參數(最後一個 0)控制混合強度
  • Button2 直接將畫布自身疊加一次,產生加深效果
  • Button3 先用純色填滿畫布,再疊加原圖,產生「彩色濾鏡壓暗」效果

視窗設計要點

  • 包含 TColorDialog 供使用者選擇填充顏色
  • 按鈕建議改為「原圖」、「自身疊加變暗」、「選色後疊加」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved