c# 创建自绘用户控件

匿名 (未验证) 提交于 2019-12-03 00:12:02

一、继承UserControl类

public class Chart : UserControl

二、定义常量、私有成员变量、属性

  加入属性的修饰,可以在图形界面配置

  private const int LeftPos = 60;  private int[] m_values = new int[3];  [CategoryAttribute("Chart")]   [DescriptionAttribute("已解决的事务数量")]  [DefaultValueAttribute(0)]    public int Resolved  {      get       {         return m_values[0];     }        set        {          //对输入值进行验证           if (value < 0)           {              value = 0;           }           m_values[0] = value;           //重绘控件           Invalidate();     }   } 

protected override void OnPaint(PaintEventArgs e) {     base.OnPaint(e);      e.Graphics.Clear(Parent.BackColor);     e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;     //如果控件大小能显示下所有数据     if (Width > LeftPos && m_barHeight > 1)     {         //绘制左边的标签         DrawLabels(e.Graphics);         //绘制图表         DrawChart(e.Graphics);     }     // 总是绘制文本信息     DrawMessage(e.Graphics); }  protected override void OnSizeChanged(EventArgs e) {     // 调用CalculateBounds函数重新计算布局     CalculateBounds();          //调用基类处理函数     base.OnSizeChanged(e); }  // 计算布局及布局内元素的各种参数数值 private void CalculateBounds() {  }  protected override void OnFontChanged(EventArgs e) {     base.OnFontChanged(e);     CalculateBounds(); }  protected override void OnTextChanged(EventArgs e) {     base.OnTextChanged(e);     CalculateBounds();     // 立刻重绘     Invalidate(); }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!