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

Delphi 繪製正弦曲線:OnPaint 事件與雙緩衝防閃爍實作

     編輯:Delphi

繪圖邏輯

於表單 OnPaint 事件繪製,確保視窗切換/最小化後自動重繪。座標映射:將 0~ClientWidth 映射為 0~2π,計算正弦值後縮放至 ClientHeight 中心對稱區間。

核心程式碼

procedure TForm1.FormPaint(Sender: TObject);
var
  x: Integer;
  y, a: Double;
begin
  Canvas.Pen.Width := 3;
  Canvas.MoveTo(0, ClientHeight div 2); // 起點:中線左端
  for x := 0 to ClientWidth do begin
    a := (x / ClientWidth) * 2 * Pi;    // 角度 → 弧度
    y := Sin(a);                        // -1 ~ 1
    y := (1 - y) * ClientHeight / 2;    // 翻轉 Y 軸並縮放至客戶區
    Canvas.LineTo(x, Round(y));
  end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  Refresh; // 尺寸變更觸發重繪
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DoubleBuffered := True; // 開啟雙緩衝,消除閃爍
end;

關鍵技術點

  • DoubleBuffered := True:系統分配離屏位圖,繪製完成一次性 Blit 到螢幕,消除逐像素閃爍。
  • OnPaint 而非 OnCreate/按鈕事件繪圖:保證視窗狀態變更時自動恢復畫面。
  • 座標轉換公式通用性:易擴展至餘弦、正切、任意週期函數曲線。

執行結果

視窗中顯示一條平滑、居中的正弦波,調整視窗大小曲線即時自適應重繪,無閃爍殘影。

擴展應用

科學計算視覺化、信號波形顯示、教學演示軟體等場景均可套用此模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved