zoukankan      html  css  js  c++  java
  • C# 开源仪表盘库—Agauge App

    1、简介

    有个叫A.J.Bauer 的大神在System.Windows.Forms.Control类的基础上建立了一个显示各种仪表盘的类。

    image

     

     

     

     

     

     

     

     

     

    英文版简介:C# Tutorial, A gauge control with all source code, .net 2.0 http://ucancode.net/CSharp_Tutorial_GDI+_Gauge_Source_Code.htm

    Github地址:Code-Artist/AGauge: C# Gauge Control https://github.com/Code-Artist/AGauge

    安装包地址:NuGet Gallery | CodeArtEng.Controls 2.2.0 https://www.nuget.org/packages/CodeArtEng.Controls/

    2、下载及安装

    (1)使用VS自带的NuGet来安装

    不清楚NuGet的童鞋可以参考这篇:真心好用的VS扩展--NuGet - 阿里云 https://www.aliyun.com/jiaocheng/624805.html

    接下来,开始安装,打开安装包地址 https://www.nuget.org/packages/CodeArtEng.Controls/

    可以看到支持package Manager 安装,只需输入下面指令:

    Install-Package CodeArtEng.Controls -Version 2.2.0

    image

    先打开VS,进入Tools即工具选项卡,找到NuGet,打开其控制台

    image

    然后在控制台输入上面的指令:

    PM

    成功安装后,就可以愉快的引用了。

    (2)手动下载软件包并导入

    在网站右侧有下载按钮,直接下载的包名称为 agauge_v2.2.0.2.nupkg

    image

    接下来添加本地的nuget包,可参考一下文章:

    NuGet添加本地包(Package) - Hejin.Wong - 博客园 https://www.cnblogs.com/egger/archive/2013/03/19/2970138.html

    进入工具(Tools),最下面一行选项(Options),找到NugetPackageManager,在包来源处添加本地包所在的目录。

    之后再进入Tools->NuGet,从设定好的package source 目录中选择我们的本地库进行导入。

    3、新建winForm工程并添加Agauge

    首先从github下载了Agauge的作者写的demo,里面是没有.sln文件的,打开csproj文件即可。

    imageimage

    这个项目用vs2013打开之后是直接可以运行的,界面是一个仪表盘和一个滑动条,拖动滑动条可以改变仪表盘的指针。

    为了快速编写自己的例子,我新建了一个C#的winForm工程,仪表盘的代码直接从demo

    拷贝过来。我新建的工程放在了 https://github.com/sheep12345679/C-Agauge-Test.git

    注意新建项目一定要使用Nuget导入agauge的package。

    主要修改了MainForm.Designer.cs和MainForm.cs里的代码:

    MainForm.Designer.cs中定义了使用的控件,同时在InitializeComponent()函数中对控件做了初始化。

    private void InitializeComponent()
            {
                System.Windows.Forms.AGaugeLabel aGaugeLabel1 = new System.Windows.Forms.AGaugeLabel();
                System.Windows.Forms.AGaugeRange aGaugeRange1 = new System.Windows.Forms.AGaugeRange();
                System.Windows.Forms.AGaugeRange aGaugeRange2 = new System.Windows.Forms.AGaugeRange();
                System.Windows.Forms.AGaugeRange aGaugeRange3 = new System.Windows.Forms.AGaugeRange();
                this.trackBar1 = new System.Windows.Forms.TrackBar();
                this.panel1 = new System.Windows.Forms.Panel();
                this.button1 = new System.Windows.Forms.Button();
                this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
                this.aGauge1 = new System.Windows.Forms.AGauge();
                this.button2 = new System.Windows.Forms.Button();
                ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit();
                this.panel1.SuspendLayout();
                this.tableLayoutPanel1.SuspendLayout();
                this.SuspendLayout();
                // 
                // trackBar1
                // 
                this.trackBar1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.trackBar1.LargeChange = 20;
                this.trackBar1.Location = new System.Drawing.Point(3, 3);
                this.trackBar1.Maximum = 200;
                this.trackBar1.Name = "trackBar1";
                this.trackBar1.Orientation = System.Windows.Forms.Orientation.Vertical;
                this.tableLayoutPanel1.SetRowSpan(this.trackBar1, 2);
                this.trackBar1.Size = new System.Drawing.Size(44, 278);
                this.trackBar1.TabIndex = 1;
                this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.None;
                this.trackBar1.ValueChanged += new System.EventHandler(this.trackBar1_ValueChanged);
                // 
                // panel1
                // 
                this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
                this.panel1.Controls.Add(this.button1);
                this.panel1.Location = new System.Drawing.Point(53, 237);
                this.panel1.Name = "panel1";
                this.panel1.Size = new System.Drawing.Size(230, 35);
                this.panel1.TabIndex = 2;
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(-1, -1);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 0;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // tableLayoutPanel1
                // 
                this.tableLayoutPanel1.ColumnCount = 2;
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F));
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
                this.tableLayoutPanel1.Controls.Add(this.aGauge1, 1, 0);
                this.tableLayoutPanel1.Controls.Add(this.trackBar1, 0, 0);
                this.tableLayoutPanel1.Controls.Add(this.panel1, 1, 1);
                this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
                this.tableLayoutPanel1.Name = "tableLayoutPanel1";
                this.tableLayoutPanel1.RowCount = 2;
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
                this.tableLayoutPanel1.Size = new System.Drawing.Size(334, 284);
                this.tableLayoutPanel1.TabIndex = 3;
                // 
                // aGauge1
                // 
                this.aGauge1.BackColor = System.Drawing.SystemColors.Control;
                this.aGauge1.BaseArcColor = System.Drawing.Color.Gray;
                this.aGauge1.BaseArcRadius = 80;
                this.aGauge1.BaseArcStart = 135;
                this.aGauge1.BaseArcSweep = 270;
                this.aGauge1.BaseArcWidth = 2;
                this.aGauge1.Center = new System.Drawing.Point(100, 100);
                this.aGauge1.Dock = System.Windows.Forms.DockStyle.Fill;
                aGaugeLabel1.Color = System.Drawing.SystemColors.WindowText;
                aGaugeLabel1.Font = new System.Drawing.Font("Verdana", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                aGaugeLabel1.Name = "GaugeLabel1";
                aGaugeLabel1.Position = new System.Drawing.Point(200, 260);
                aGaugeLabel1.Text = "0";
                this.aGauge1.GaugeLabels.Add(aGaugeLabel1);
                aGaugeRange1.Color = System.Drawing.Color.Red;
                aGaugeRange1.EndValue = 200F;
                aGaugeRange1.InnerRadius = 70;
                aGaugeRange1.InRange = false;
                aGaugeRange1.Name = "AlertRange";
                aGaugeRange1.OuterRadius = 80;
                aGaugeRange1.StartValue = 160F;
                aGaugeRange2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
                aGaugeRange2.EndValue = 160F;
                aGaugeRange2.InnerRadius = 70;
                aGaugeRange2.InRange = false;
                aGaugeRange2.Name = "GaugeRange3";
                aGaugeRange2.OuterRadius = 75;
                aGaugeRange2.StartValue = 0F;
                aGaugeRange3.Color = System.Drawing.Color.Lime;
                aGaugeRange3.EndValue = 160F;
                aGaugeRange3.InnerRadius = 75;
                aGaugeRange3.InRange = false;
                aGaugeRange3.Name = "GaugeRange2";
                aGaugeRange3.OuterRadius = 80;
                aGaugeRange3.StartValue = 0F;
                this.aGauge1.GaugeRanges.Add(aGaugeRange1);
                this.aGauge1.GaugeRanges.Add(aGaugeRange2);
                this.aGauge1.GaugeRanges.Add(aGaugeRange3);
                this.aGauge1.Location = new System.Drawing.Point(53, 3);
                this.aGauge1.MaxValue = 200F;
                this.aGauge1.MinValue = 0F;
                this.aGauge1.Name = "aGauge1";
                this.aGauge1.NeedleColor1 = System.Windows.Forms.AGaugeNeedleColor.Yellow;
                this.aGauge1.NeedleColor2 = System.Drawing.Color.Olive;
                this.aGauge1.NeedleRadius = 80;
                this.aGauge1.NeedleType = System.Windows.Forms.NeedleType.Advance;
                this.aGauge1.NeedleWidth = 2;
                this.aGauge1.ScaleLinesInterColor = System.Drawing.Color.Black;
                this.aGauge1.ScaleLinesInterInnerRadius = 73;
                this.aGauge1.ScaleLinesInterOuterRadius = 80;
                this.aGauge1.ScaleLinesInterWidth = 1;
                this.aGauge1.ScaleLinesMajorColor = System.Drawing.Color.Black;
                this.aGauge1.ScaleLinesMajorInnerRadius = 70;
                this.aGauge1.ScaleLinesMajorOuterRadius = 80;
                this.aGauge1.ScaleLinesMajorStepValue = 20F;
                this.aGauge1.ScaleLinesMajorWidth = 2;
                this.aGauge1.ScaleLinesMinorColor = System.Drawing.Color.Gray;
                this.aGauge1.ScaleLinesMinorInnerRadius = 75;
                this.aGauge1.ScaleLinesMinorOuterRadius = 80;
                this.aGauge1.ScaleLinesMinorTicks = 9;
                this.aGauge1.ScaleLinesMinorWidth = 1;
                this.aGauge1.ScaleNumbersColor = System.Drawing.Color.Black;
                this.aGauge1.ScaleNumbersFormat = null;
                this.aGauge1.ScaleNumbersRadius = 95;
                this.aGauge1.ScaleNumbersRotation = 0;
                this.aGauge1.ScaleNumbersStartScaleLine = 1;
                this.aGauge1.ScaleNumbersStepScaleLines = 1;
                this.aGauge1.Size = new System.Drawing.Size(278, 228);
                this.aGauge1.TabIndex = 0;
                this.aGauge1.Text = "aGauge1";
                this.aGauge1.Value = 0F;
                this.aGauge1.ValueChanged += new System.EventHandler(this.aGauge1_ValueChanged);
                this.aGauge1.ValueInRangeChanged += new System.EventHandler<System.Windows.Forms.ValueInRangeChangedEventArgs>(this.aGauge1_ValueInRangeChanged);
                // 
                // button2
                // 
                this.button2.Location = new System.Drawing.Point(224, 193);
                this.button2.Name = "button2";
                this.button2.Size = new System.Drawing.Size(75, 23);
                this.button2.TabIndex = 0;
                this.button2.Text = "button2";
                this.button2.UseVisualStyleBackColor = true;
                // 
                // MainForm
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(341, 278);
                //this.Controls.Add(this.aGauge1);
                //this.Controls.Add(this.panel1);
                //this.Controls.Add(trackBar1);
                //this.Controls.Add(this.button1);
    
                this.Controls.Add(tableLayoutPanel1);
                //this.Controls.Add(this.button2);
                this.Name = "MainForm";
                this.Text = "Form1";
                ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit();
                this.panel1.ResumeLayout(false);
                this.tableLayoutPanel1.ResumeLayout(false);
                this.tableLayoutPanel1.PerformLayout();
                this.ResumeLayout(false);
    
            }

    需要注意的是,在设置完控件的参数之后,不要忘了this.Controls.Add(tableLayoutPanel1); 这句话,否则控件无法显示在窗口上。

            private System.Windows.Forms.AGauge aGauge1;
            private System.Windows.Forms.TrackBar trackBar1;
            private System.Windows.Forms.Panel panel1;
            private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.Button button2;

    之后对MainForm.cs进行修改,定义操作控件的函数

    //MainForm.cs
    public partial class MainForm : Form
        {
            private System.Windows.Forms.AGaugeLabel label;
            private System.Windows.Forms.AGaugeRange alert;
            public MainForm()
            {
                InitializeComponent();
    
                label = aGauge1.GaugeLabels.FindByName("GaugeLabel1");
                alert = aGauge1.GaugeRanges.FindByName("AlertRange");
                aGauge1.ValueInRangeChanged += AGauge1_ValueInRangeChanged;
            }
            private void AGauge1_ValueInRangeChanged(object sender, ValueInRangeChangedEventArgs e)
            {
    
            }
    
            private void trackBar1_ValueChanged(object sender, EventArgs e)
            {
                aGauge1.Value = trackBar1.Value;
            }
    
            private void aGauge1_ValueChanged(object sender, EventArgs e)
            {
                label.Text = aGauge1.Value.ToString();
            }
    
            private void aGauge1_ValueInRangeChanged(object sender, System.Windows.Forms.ValueInRangeChangedEventArgs e)
            {
                System.Diagnostics.Debug.WriteLine("InRange Event.");
                if (e.Range == alert)
                {
                    panel1.BackColor = e.InRange ? Color.Red : Color.FromKnownColor(KnownColor.Control);
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //aGauge1.GaugeRanges.RemoveAt(0);
                //aGauge1.GaugeRanges.Add(new AGaugeRange(Color.Blue, 40, 60, , ));
            }
        }
  • 相关阅读:
    HDU 5313 bitset优化背包
    bzoj 2595 斯坦纳树
    COJ 1287 求匹配串在模式串中出现的次数
    HDU 5381 The sum of gcd
    POJ 1739
    HDU 3377 插头dp
    HDU 1693 二进制表示的简单插头dp
    HDU 5353
    URAL 1519 基础插头DP
    UVA 10294 等价类计数
  • 原文地址:https://www.cnblogs.com/oucsheep/p/9276409.html
Copyright © 2011-2022 走看看