首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 實現文字跑馬燈效果:Label + Timer 左右/上下滾動完整範例

     編輯:關於C#

核心原理

利用 Timer 定期修改 Label.Left / Top 座標,配合邊界檢查實現循環滾動。關鍵在於「步長」與「間隔」的平衡:步長太大會閃爍,間隔太長會卡頓。

完整程式碼(左→右循環)


public partial class MarqueeForm : Form
{
    public MarqueeForm()
    {
        InitializeComponent();
        timer.Interval = 80; // 約 12.5 FPS
        timer.Tick += Timer_Tick;
        timer.Start();
    }

    private void Timer_Tick(object sender, EventArgs e)
    {
        // 向右移動
        lblMarquee.Left += 4;

        // 完全移出視窗右側 → 瞬間移到左側外繼續
        if (lblMarquee.Left > this.ClientSize.Width)
            lblMarquee.Left = -lblMarquee.Width;
    }
}

四大方向參數對照表

方向修改屬性邊界判斷重置位置
左→右Left += stepLeft > ClientWidthLeft = -LabelWidth
右→左Left -= stepLeft < -LabelWidthLeft = ClientWidth
下→上Top -= stepTop < -LabelHeightTop = ClientHeight
上→下Top += stepTop > ClientHeightTop = -LabelHeight

進階優化建議

  1. DoubleBuffered = true:表單/容器啟用雙緩衝消除閃爍。
  2. 使用 Panel 當容器:將 Label 放入 Panel,僅移動 Panel 內容,避免邊界計算受表單邊框影響。
  3. GDI+ 繪製:在 Paint 事件中 DrawString,支援漸變、描邊、圖文混排,效能更佳。
  4. WPF 機制:若專案為 WPF,請直接使用 ScrollViewer + TranslateTransform + DoubleAnimation 實現硬體加速跑馬燈。

常見坑點

  • Label AutoSize = true 會導致寬度隨文字改變,滾動時寬度變動造成抖動 → 設 AutoSize = false 固定寬高。
  • Timer 在設計師拖放時預設 Enabled = false,記得程式碼啟動或屬性視窗勾選。
  • 跨執行緒更新 UI 會拋例外 → Timer 元件已自動切回 UI 執行緒,安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved