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

DelphiX 實戰:TDIB.LinePolar 極座標線條繪製範例

     編輯:Delphi

TDIB.LinePolar 以極座標方式繪製線條:從原點 (0,0) 以指定角度 (度數) 與長度 (半徑) 畫線。本文提供扇形掃描線效果範例。

效果預覽

LinePolar 效果

核心程式碼

unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DIB, StdCtrls;
type
  TForm1 = class(TForm)
    DXPaintBox1: TDXPaintBox;
    procedure FormCreate(Sender: TObject);
  end;
var Form1: TForm1;
implementation {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const ImgPath1 = 'C:\Temp\DX.jpg';
var r: Real;
begin
  DXPaintBox1.DIB.LoadFromFile(ImgPath1);
  DXPaintBox1.Width := DXPaintBox1.DIB.Width;
  DXPaintBox1.Height := DXPaintBox1.DIB.Height;
  r := 0;
  while r < 90 do begin
    // LinePolar(CenterX, CenterY, AngleDeg, Length, Color)
    DXPaintBox1.DIB.LinePolar(0, 0, r, DXPaintBox1.Width, clRed);
    r := r + 5; // 每 5 度一條線
  end;
end;
end.

參數說明

LinePolar(CenterX, CenterY: Integer; AngleDeg: Real; Length: Integer; Color: TColor)
  • CenterX, CenterY:極座標原點(範例為左上角 0,0)
  • AngleDeg:角度(度數),0° 向右,90° 向下,逆時針增加
  • Length:線長(半徑),範例用寬度確保觸及邊緣
  • Color:線條顏色

效果分析

  • 從 0° 到 85°,每 5° 畫一條紅線
  • 形成 90° 扇形區域的密集射線(共 18 條)
  • 所有線從左上角發散,覆蓋右下方區域

應用場景

  • **雷達掃描**:旋轉單線 + 殘留軌跡
  • **日光/神光效果**:從光源發散的體積光線條
  • **爆炸衝擊波**:圓周均勻發散的短線段
  • **程序化幾何**:正多邊形、星形、花朵曲線生成
  • **數學視覺化**:極座標函數 r = f(θ) 繪圖

進階:動態掃描雷達

var Angle: Real = 0;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  DXPaintBox1.DIB.Assign(BackgroundDIB); // 重置背景
  // 繪製掃描線
  DXPaintBox1.DIB.LinePolar(CX, CY, Angle, MaxRadius, clLime);
  // 繪製殘留軌跡(半透明)
  DXPaintBox1.DIB.LinePolar(CX, CY, Angle - 10, MaxRadius, clGreen, fmMix50);
  Angle := Angle + 2; if Angle >= 360 then Angle := 0;
  DXPaintBox1.Repaint;
end;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved