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