於表單 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/按鈕事件繪圖:保證視窗狀態變更時自動恢復畫面。視窗中顯示一條平滑、居中的正弦波,調整視窗大小曲線即時自適應重繪,無閃爍殘影。
科學計算視覺化、信號波形顯示、教學演示軟體等場景均可套用此模式。