TDIB.DoNovaEffect 產生類似恆星閃耀、新星爆發的放射狀光暈效果,參數極多且效果強烈,適合太空遊戲、魔法特效、場景轉場。本文提供完整參數實例範例。

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; // 觸發新星效果
procedure Button1Click(Sender: TObject);
procedure Button2Click(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
// DoNovaEffect(Rays, RayLen, Brightness, CX, CY, AngleOffset, ScaleX, ScaleY, Seed1, Seed2, Palette)
DXPaintBox1.DIB.DoNovaEffect(16, // 光線數
48, // 光線長度
255, // 亮度
DXPaintBox1.DIB.Width div 3, // 中心 X
DXPaintBox1.DIB.Height div 3, // 中心 Y
18, // 角度偏移
1, // X 縮放
1, // Y 縮放
2782, // 隨機種子 1
2585, // 隨機種子 2
nil); // 調色盤(nil=預設)
DXPaintBox1.Repaint;
end;
end.
| 參數 | 名稱 | 影響 | 建議範圍 |
|---|---|---|---|
| Rays | 光線數 | 放射線條數量 | 8~64 |
| RayLen | 光線長度 | 從中心延伸像素數 | 10~200 |
| Brightness | 亮度 | 光線最高亮度 | 0~255 |
| CX, CY | 中心座標 | 效果發散原點 | 畫面範圍內 |
| AngleOffset | 角度偏移 | 整體旋轉角度 | 0~360 |
| ScaleX, ScaleY | 縮放 | 橢圓度控制 | 0.1~5.0 |
| Seed1, Seed2 | 隨機種子 | 光線抖動/分支模式 | 任意整數 |
| Palette | 調色盤 | 顏色映射表,nil=白光 | TDIB 或 nil |
var Frame: Integer = 0;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
DXPaintBox1.DIB.Assign(OriginalDIB);
Frame := Frame + 1;
DXPaintBox1.DIB.DoNovaEffect(
12 + Sin(Frame*0.1)*4, // 光線數脈動
30 + Cos(Frame*0.05)*20, // 長度脈動
200 + Sin(Frame*0.2)*55, // 亮度脈動
CX, CY, Frame * 2, // 緩慢旋轉
1, 1, 2782+Frame, 2585-Frame, nil);
DXPaintBox1.Repaint;
end;