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

DelphiX 實戰:TDIB.ColoredLine 彩色漸層線條完整範例

     編輯:Delphi

TDIB.ColoredLine 繪製兩端顏色不同的漸層直線,支援 3 種線型與 3 種像素幾何模式,適合雷達掃描線、能量光束、UI 裝飾線等視覺效果。本文提供完整互動介面展示所有組合。

效果預覽

ColoredLine 效果

核心程式碼

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DIB, StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    DXPaintBox1: TDXPaintBox;
    RadioGroup1: TRadioGroup; // 線型
    RadioGroup2: TRadioGroup; // 像素幾何
    Button1: TButton;
    LabeledEdit1: TLabeledEdit; // 線寬
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;
var Form1: TForm1;
implementation {$R *.dfm}
uses TypInfo;

procedure TForm1.Button1Click(Sender: TObject);
var w, h: Integer; pt1, pt2, pt3, pt4: TPoint;
begin
  w := DXPaintBox1.ClientWidth; h := DXPaintBox1.ClientHeight;
  pt1 := Point(w div 6, h div 3); pt2 := Point(w div 6 * 5, h div 3);
  pt3 := Point(w div 6, h div 3 * 2); pt4 := Point(w div 6 * 5, h div 3 * 2);
  DXPaintBox1.DIB.SetSize(w, h, 24);
  DXPaintBox1.DIB.FillDIB8(0); // 快速填充
  // 第一條線:紅→黃
  DXPaintBox1.DIB.ColoredLine(pt1, pt2,
    TColorLineStyle(RadioGroup1.ItemIndex),
    clRed, clYellow,
    TColorLinePixelGeometry(RadioGroup2.ItemIndex),
    StrToIntDef(LabeledEdit1.Text, 1));
  // 第二條線:白→藍
  DXPaintBox1.DIB.ColoredLine(pt3, pt4,
    TColorLineStyle(RadioGroup1.ItemIndex),
    clWhite, clBlue,
    TColorLinePixelGeometry(RadioGroup2.ItemIndex),
    StrToIntDef(LabeledEdit1.Text, 1));
  DXPaintBox1.Repaint;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
  DXPaintBox1.Align := alTop;
  LabeledEdit1.EditLabel.Caption := '線寬';
  LabeledEdit1.Text := '10';
  RadioGroup1.Caption := 'TColorLineStyle';
  RadioGroup2.Caption := 'TColorLinePixelGeometry';
  for i := 0 to 2 do begin
    RadioGroup1.Items.Add(GetEnumName(TypeInfo(TColorLineStyle), i));
    RadioGroup2.Items.Add(GetEnumName(TypeInfo(TColorLinePixelGeometry), i));
  end;
  RadioGroup1.ItemIndex := 1; RadioGroup2.ItemIndex := 2;
  RadioGroup1.OnClick := Button1Click;
  RadioGroup2.OnClick := Button1Click;
  LabeledEdit1.OnChange := Button1Click;
end;
end.

線型 TColorLineStyle

值常數效果
0clsSolid實線漸層
1clsDash虛線漸層
2clsDot點線漸層

像素幾何 TColorLinePixelGeometry

值常數效果
0clpgSquare方形像素(粗線呈方塊)
1clpgRound圓形像素(粗線端點圓潤)
2clpgDiamond菱形像素(粗線呈菱形)

參數說明

ColoredLine(P1, P2: TPoint; Style: TColorLineStyle; Color1, Color2: TColor;
  Geometry: TColorLinePixelGeometry; Width: Integer)
  • Color1, Color2:起點/終點顏色,中間自動線性插值
  • Width:線寬(像素),配合 Geometry 決定實際形狀
  • FillDIB8(0):8-bit 快速填充黑色,比 Fill 快

應用場景

  • **雷達/聲納掃描線**:旋轉的單色/雙色漸層線
  • **能量光束/雷射**:寬度隨距離變化的漸層線
  • **UI 裝飾**:按鈕邊框、分隔線、進度條光澤
  • **資料視覺化**:趨勢線顏色代表數值變化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved