用戶控件的設計要點 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。

相關文章
相關標籤/搜索