用户控件的设计要点 System.Windows.Forms.UserControl

用户控件的设计要点

最近的项目中有一个瀑布图(彩图)的功能,就是把空间和时间上的点量值以图的形式呈现出来,以下图:缓存

X坐标为空间,水平方向的一个像素表明一个空间单位(例如50米)ide

Y坐标为时间,垂直方向的一个像素表明一个时间单位(例如1秒)函数

因为没有现成的彩图控件可使用,因而就本身尝试的写了一个用户控件,这篇博客就是讲述了如何编写一个相似的用户控件。this

 

该用户控件使用了自绘制的功能,其实要实现自绘制仍是比较容易的,按如下的几个步骤便可:spa

1,建立一个继承自 System.Windows.Forms.UserControl 的类。右击解决方案项目,选择“添加” “用户控件”,输入控件名称。设计

public partial class ColorControl : UserControl

2,设置控件 DoubleBuffered 为true,对控件进行双缓存处理,减小绘制控件时的闪烁。code

3,在构造函数里添加以下代码:orm

设置 Control 类的 ResizeRedraw 为true,取消了在调整控件大小时的拖尾现象(以前绘制的内容没有擦除)blog

        //
        // 摘要:
        //     获取或设置一个值,该值指示控件在调整大小时是否重绘本身。
        //
        // 返回结果:
        //     若是控件在调整大小时重绘本身,则为 true;不然为 false。
        protected bool ResizeRedraw { get; set; }
        public ColorControl()
        {
            InitializeComponent();
            ResizeRedraw = true;
        }

4,重写控件的 OnPaint 方法继承

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            // 开始绘制本身的代码便可
            Draw(e.Graphics, this.ClientRectangle);
        }        

具体的 Draw 方法如何写就看项目对控件的需求了。下面是个简单的Draw方法截图:

 

固然在制做图表控件仍是有不少东西须要考虑的,最基本的绘制坐标系,绘制标题,绘制主内容区域,还要提供一些事件和方法供客户类使用。这后面的东西能够参考开源的 ZedGraph。

相关文章
相关标签/搜索