用戶控件的設計要點 System.Windows.Forms.UserControl


用戶控件的設計要點

最近的項目中有一個瀑布圖(彩圖)的功能,就是把空間和時間上的點量值以圖的形式呈現出來,如下圖:

X坐標為空間,水平方向的一個像素代表一個空間單位(例如50米)

Y坐標為時間,垂直方向的一個像素代表一個時間單位(例如1秒)

由於沒有現成的彩圖控件可以使用,於是就自己嘗試的寫了一個用戶控件,這篇博客就是講述了如何編寫一個類似的用戶控件。

 

該用戶控件使用了自繪制的功能,其實要實現自繪制還是比較容易的,按以下的幾個步驟即可:

1,創建一個繼承自 System.Windows.Forms.UserControl 的類。右擊解決方案項目,選擇“添加” “用戶控件”,輸入控件名稱。

public partial class ColorControl : UserControl

2,設置控件 DoubleBuffered 為true,對控件進行雙緩存處理,減少繪制控件時的閃爍。

3,在構造函數里添加如下代碼:

設置 Control 類的 ResizeRedraw 為true,取消了在調整控件大小時的拖尾現象(之前繪制的內容沒有擦除)

        //
        // 摘要:
        //     獲取或設置一個值,該值指示控件在調整大小時是否重繪自己。
        //
        // 返回結果:
        //     如果控件在調整大小時重繪自己,則為 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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM