欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 在winform下做一個簡單的儀表盤

admin
2024年6月18日 12:40 本文熱度 1025

摘要


  1. 創建一個新的WinForms應用程序項目。

  2. 在窗體上添加一個PictureBox控件,用于繪制儀表盤。

  3. 在窗體的構造函數,訂閱PictureBoxPaint事件以進行繪制。

要在WinForms中創建一個儀表盤(Gauge),可以使用GDI+進行自定義繪制。這里是一個簡單的示例,展示如何創建一個儀表盤控件并在窗口中顯示它。這個示例包括繪制刻度、刻度上的數字以及根據當前值繪制指針。

正文


public partial class Form1 : Form

{

    int yourValue = 110;

    Timer timer=new Timer();

    public Form1()

    {

        InitializeComponent();


        pictureBox1.Paint += PictureBox1_Paint;

        timer.Interval = 1000;

        timer.Tick += Timer_Tick;

        timer.Start();

    }


    private void Timer_Tick(object? sender, EventArgs e)

    {

        yourValue=new Random().Next(1,200);

        pictureBox1.Refresh();

    }


    private void PictureBox1_Paint(object? sender, PaintEventArgs e)

    {

        Graphics g = e.Graphics;

        g.SmoothingMode = SmoothingMode.AntiAlias; // 減少毛邊


        int centerX = pictureBox1.Width / 2;

        int centerY = pictureBox1.Height / 2;

        int radius = Math.Min(centerX, centerY);

        int totalSteps = 20; // 刻度的總數


        // 自定義顏色

        Color scaleColor = Color.Gray;

        Color textColor = Color.Black;


        Color pointerEndColor = Color.Red; // 指針結束點的顏色


        // 繪制刻度盤

        for (int step = 0; step <= totalSteps; step++)

        {

            double angle = Math.PI * (1 - step / (double)totalSteps); // 此行修改

            int x = centerX + (int)(0.85 * radius * Math.Cos(angle));

            int y = centerY - (int)(0.85 * radius * Math.Sin(angle));


            // 繪制刻度圓點

            int dotRadius = 4;

            g.FillEllipse(new SolidBrush(scaleColor), x - dotRadius, y - dotRadius, dotRadius * 2, dotRadius * 2);


            // 顯示刻度上的數字

            int value = step * 10; // 0到200的刻度值

            SizeF textSize = g.MeasureString(value.ToString(), Font);

            int textX = centerX + (int)(0.75 * radius * Math.Cos(angle)) - (int)(textSize.Width / 2);

            int textY = centerY - (int)(0.75 * radius * Math.Sin(angle)) - (int)(textSize.Height / 2);

            g.DrawString(value.ToString(), Font, new SolidBrush(textColor), new PointF(textX, textY));

        }


        // 繪制指針

        int pointerLength = radius - 20;

        double pointerAngle = Math.PI * (yourValue / 200.0); // 根據值計算角度

        int pointerX = centerX + (int)(pointerLength * Math.Cos(pointerAngle));

        int pointerY = centerY - (int)(pointerLength * Math.Sin(pointerAngle));


        // 繪制指針線

        g.DrawLine(new Pen(pointerEndColor, 3), centerX, centerY, pointerX, pointerY);

    }

}

代碼解釋

  1. 類定義和初始化

    • Form1類繼承自Form,包含一個整型變量yourValue來保存儀表盤指針的當前值。

    • Timer類實例用于每秒產生一個隨機值并更新儀表盤。

  2. 構造函數

    • 在構造函數Form1中,設置pictureBox1Paint事件以便在需要重繪時調用PictureBox1_Paint方法。

    • 設置計時器的時間間隔為1000毫秒(1秒),并在每次Tick事件觸發時調用Timer_Tick方法。

    • 啟動計時器。

  3. Timer_Tick方法

    • 隨機生成一個1到200的值并賦給yourValue

    • 調用pictureBox1.Refresh觸發重繪。

  4. PictureBox1_Paint方法

    • 通過參數e獲取Graphics對象,用于繪制操作。

    • 設置抗鋸齒模式以提高繪圖質量。

    • 計算儀表盤的中心點和半徑。

    • 繪制刻度盤,包括刻度的刻畫和刻度值的顯示。

    • 根據當前值計算指針的位置并繪制指針。

這個示例中,儀表盤的刻度值范圍是0到200,每秒隨機更新一個值來模擬指針的移動。通過對上述代碼的理解,您可以進一步定制和擴展儀表盤控件,例如改變外觀、增加功能等。


該文章在 2024/6/18 12:40:16 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved