c#自定義液晶數字控件


項目中經常與硬件打交道,LED顯示屏上面的液晶數字很好看,QT中直接就有數碼管這個控件,C#中自己來寫一個,其實掌握了一種自定義控件的寫法,其他的都是浮雲,舉一反三,最笨的自定義控件無非就是准備好精美的圖片,然后雙緩沖根據條件繪制到界面上,將手機QQ和金山毒霸手機版下載寫來,拓展名改為rar,解壓出來,在 res文件夾下面可以看到所有使用的資源,直接拿過來用咯。其實手機軟件大部分效果都是繪制圖片+文字而成的。

效果圖:一個動態的液晶時鍾

 

步驟1

准備0-9十張圖片

                  

添加到項目資源里面。

步驟2

新建用戶控件myButtonNumber,構造函數里面設置雙緩沖。

public myButtonNumber()

        {

            InitializeComponent();

            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

            this.SetStyle(ControlStyles.DoubleBuffer, true);

            this.SetStyle(ControlStyles.ResizeRedraw, true);

            this.SetStyle(ControlStyles.Selectable, true);

            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

            this.SetStyle(ControlStyles.UserPaint, true);

            this.BackColor = Color.Transparent;

            this.Size = new Size(39, 68);

        }

步驟3

增加屬性Number,這樣的話可以在屬性欄里面找到並賦值。

int number = 0;

        public int Number

        {

            set 

            {

                if (value < 0 || value > 9) { number = 0; } else { number = value; }

                this.Invalidate(); 

            }

            get { return number; }

        }

 

步驟4

重寫OnPaint事件(絕大部分自定義控件都需要重寫這個事件)

 

        protected override void OnPaint(PaintEventArgs e)

        {           

            Graphics g = e.Graphics;

            Rectangle rec = new Rectangle(0, 0, this.Size.Width, this.Size.Height);

 

            switch (number)

            {

                case 0: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_0, rec); break;

                case 1: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_1, rec); break;

                case 2: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_2, rec); break;

                case 3: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_3, rec); break;

                case 4: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_4, rec); break;

                case 5: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_5, rec); break;

                case 6: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_6, rec); break;

                case 7: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_7, rec); break;

                case 8: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_8, rec); break;

                case 9: g.DrawImage(global::myAlarmSystem.Properties.Resources.number_9, rec); break;

            }

        }

 

 代碼下載:http://files.cnblogs.com/feiyangqingyun/myAlarmSystem20130527.zip


免責聲明!

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



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