成都网站建设设计

将想法与焦点和您一起共享

c#Winform自定义控件-仪表盘功能-创新互联

前提

成都创新互联主营合阳网站建设的网络公司,主营网站建设方案,app软件开发,合阳h5小程序制作搭建,合阳网站营销推广欢迎合阳等地区企业咨询

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

GitHub:https://github.com/kwwwvagaa/NetWinformControl

码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git

NuGet

Install-Package HZH_Controls

目录

https://www.cnblogs.com/bfyx/p/11364884.html

用处及效果

c# Winform自定义控件-仪表盘功能

准备工作

依然使用GDI+画的,不懂的话就百度一下吧

另外主要用到了三角函数,如果不懂,可以向初中的数学老师再问问(你也可以百度一下)

开始

添加一个类UCMeter 继承 UserControl

首先添加一个需要控制的属性

private int splitCount = 10;
     /// 
     /// Gets or sets the split count.
     /// 
     /// The split count.
     [Description("分隔刻度数量,>1"), Category("自定义")]
     public int SplitCount
     {
       get { return splitCount; }
      set
      {
        if (value < 1)
          return;
        splitCount = value;
        Refresh();
      }
    }
    private int meterDegrees = 150;
    /// 
    /// Gets or sets the meter degrees.
    /// 
    /// The meter degrees.
    [Description("表盘跨度角度,0-360"), Category("自定义")]
    public int MeterDegrees
    {
      get { return meterDegrees; }
      set
      {
        if (value > 360 || value <= 0)
          return;
        meterDegrees = value;
        Refresh();
      }
    }
    private decimal minValue = 0;
    /// 
    /// Gets or sets the minimum value.
    /// 
    /// The minimum value.
    [Description("最小值,= maxValue)
          return;
        minValue = value;
        Refresh();
      }
    }
    private decimal maxValue = 100;
    /// 
    /// Gets or sets the maximum value.
    /// 
    /// The maximum value.
    [Description("大值,>MinValue"), Category("自定义")]
    public decimal MaxValue
    {
      get { return maxValue; }
      set
      {
        if (value <= minValue)
          return;
        maxValue = value;
        Refresh();
      }
    }
    /// 
    /// 获取或设置控件显示的文字的字体。
    /// 
    /// The font.
    /// 
    ///  
    ///  
    ///  
    ///  
    /// 
    [Description("刻度字体"), Category("自定义")]
    public override Font Font
    {
      get
      {
        return base.Font;
      }
      set
      {
        base.Font = value;
        Refresh();
      }
    }
    private decimal m_value = 0;
    /// 
    /// Gets or sets the value.
    /// 
    /// The value.
    [Description("值,>=MinValue并且<=MaxValue"), Category("自定义")]
    public decimal Value
    {
      get { return m_value; }
      set
      {
        if (value < minValue || value > maxValue)
          return;
        m_value = value;
        Refresh();
      }
    }
    private MeterTextLocation textLocation = MeterTextLocation.None;
    /// 
    /// Gets or sets the text location.
    /// 
    /// The text location.
    [Description("值和固定文字显示位置"), Category("自定义")]
    public MeterTextLocation TextLocation
    {
      get { return textLocation; }
      set
      {
        textLocation = value;
        Refresh();
      }
    }
    private string fixedText;
    /// 
    /// Gets or sets the fixed text.
    /// 
    /// The fixed text.
    [Description("固定文字"), Category("自定义")]
    public string FixedText
    {
      get { return fixedText; }
      set
      {
        fixedText = value;
        Refresh();
      }
    }
    private Font textFont = DefaultFont;
    /// 
    /// Gets or sets the text font.
    /// 
    /// The text font.
    [Description("值和固定文字字体"), Category("自定义")]
    public Font TextFont
    {
      get { return textFont; }
      set
      {
        textFont = value;
        Refresh();
      }
    }
    private Color externalRoundColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the external round.
    /// 
    /// The color of the external round.
    [Description("外圆颜色"), Category("自定义")]
    public Color ExternalRoundColor
    {
      get { return externalRoundColor; }
      set
      {
        externalRoundColor = value;
        Refresh();
      }
    }
    private Color insideRoundColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the inside round.
    /// 
    /// The color of the inside round.
    [Description("内圆颜色"), Category("自定义")]
    public Color InsideRoundColor
    {
      get { return insideRoundColor; }
      set
      {
        insideRoundColor = value;
        Refresh();
      }
    }
    private Color boundaryLineColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the boundary line.
    /// 
    /// The color of the boundary line.
    [Description("边界线颜色"), Category("自定义")]
    public Color BoundaryLineColor
    {
      get { return boundaryLineColor; }
      set
      {
        boundaryLineColor = value;
        Refresh();
      }
    }
    private Color scaleColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the scale.
    /// 
    /// The color of the scale.
    [Description("刻度颜色"), Category("自定义")]
    public Color ScaleColor
    {
      get { return scaleColor; }
      set
      {
        scaleColor = value;
        Refresh();
      }
    }
    private Color scaleValueColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the scale value.
    /// 
    /// The color of the scale value.
    [Description("刻度值文字颜色"), Category("自定义")]
    public Color ScaleValueColor
    {
      get { return scaleValueColor; }
      set
      {
        scaleValueColor = value;
        Refresh();
      }
    }
    private Color pointerColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the pointer.
    /// 
    /// The color of the pointer.
    [Description("指针颜色"), Category("自定义")]
    public Color PointerColor
    {
      get { return pointerColor; }
      set
      {
        pointerColor = value;
        Refresh();
      }
    }
    private Color textColor = Color.FromArgb(255, 77, 59);
    /// 
    /// Gets or sets the color of the text.
    /// 
    /// The color of the text.
    [Description("值和固定文字颜色"), Category("自定义")]
    public Color TextColor
    {
      get { return textColor; }
      set
      {
        textColor = value;
        Refresh();
      }
    }

    Rectangle m_rectWorking;

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:c#Winform自定义控件-仪表盘功能-创新互联
本文来源:http://chengdu.cdxwcx.cn/article/cophcp.html