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

Delphi 動態字幕跑馬燈實作:Timer 控制 Panel/Label 滾動與透明背景優化

     編輯:Delphi

核心原理

利用 TTimer 定期調整容器控件 (TPanel 或 TLabel) 的 Top 座標,產生垂直向上滾動效果。循環邏輯:移出頂端 → 重置到底部 → 繼續滾動。

基礎實作步驟

  1. 建立表單 frmAbout1,AutoScroll = False
  2. 放置 Panel1:BevelOuter = bvNone、Caption = ''、高度 > 表單高度 (容納所有文字)
  3. Panel 內放置 Label (文字) 或 Image (圖片),自動排版
  4. 放置 Timer1:Interval = 50 (約 20 FPS)
  5. Timer OnTimer 事件:

procedure TfrmAbout1.Timer1Timer(Sender: TObject);
begin
  if Panel1.Top > -Panel1.Height then
    Panel1.Top := Panel1.Top - 1 // 向上移動 1 像素
  else
    Panel1.Top := frmAbout1.Height - 35; // 重置到底部 (35 為預留邊距)
end;

關閉按鈕


procedure TfrmAbout1.Button1Click(Sender: TObject);
begin
  Close;
end;

進階優化:透明背景避免遮擋

若表單有背景圖片,Panel 會遮蓋。解決方案:

  • 移除 Panel,直接將多個 Label 放置於表單
  • 設定 Label.Transparent = True
  • Timer 直接控制各 Label 的 Top 座標
  • 需自行管理多行文字的佈局與循環邏輯

水平跑馬燈變體


// 水平向左滾動
if Label1.Left + Label1.Width < 0 then
  Label1.Left := Form1.ClientWidth
else
  Label1.Left := Label1.Left - 2;

進階功能擴充

  • 速度控制:Expose Timer.Interval 或移動像素步長為屬性
  • 暫停/繼續:Timer.Enabled := False/True
  • 滑鼠懸停暫停:OnMouseEnter/Leave 控制 Timer
  • Rich Text 支援:使用 TRichEdit (需關閉邊框、設透明)
  • 圖文混排:TImage + TLabel 組合在容器中

效能考量

  • Interval = 50 平衡流暢度與 CPU 佔用
  • 避免在 Timer 內執行複雜計算或重繪
  • 大量文字建議預先渲染為位圖滾動 (Double Buffer)

總結

動態字幕是 Delphi 經典入門範例。掌握 Timer + 座標位移核心邏輯,再配合 Transparent 屬性解決背景遮擋,即可打造專業級跑馬燈效果。進階可擴充速度控制、互動暫停、富文本支援等功能。

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