使用重繪項美化WinForm的控件
更新時間:2017年10月20日 08:37:37 作者:張果
這篇文章主要為大家詳細介紹了如何使用重繪項美化WinForm中控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
如果你覺得項目中的ComboBox、ListBox或其它的Winforms控件不能滿足你的顯示要求,包括窗體在內很多控件都支持重繪修改顯示樣式。下面的示例完成對ComBox數(shù)據(jù)項的重繪,希望能起到拋磚引玉的作用。
顯示源代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace SimpleDemo { public partial class frmDrawItem : Form { public frmDrawItem() { InitializeComponent(); //指定繪制模式,這項必須指定為,OwnerDrawFixed,OwnerDrawVariable //Normal 由操作系統(tǒng)繪制,并且元素大小都相等。 //OwnerDrawFixed 手動繪制的,并且元素大小都相等。 //OwnerDrawVariable 手動繪制,元素大小可能不相等。 comboBox2.DrawMode = DrawMode.OwnerDrawFixed; } //重繪項事件 private void comboBox2_DrawItem(object sender, DrawItemEventArgs e) { //獲取要在其上繪制項的圖形表面 Graphics g = e.Graphics; //獲取表示所繪制項的邊界的矩形 System.Drawing.Rectangle rect = e.Bounds; //定義要繪制到控件中的圖標圖像 Image ico = Image.FromFile("head.png"); //定義字體對象 System.Drawing.Font font = new System.Drawing.Font(new FontFamily("宋體"), 12); if (e.Index >= 0) { //獲得當前Item的文本 string tempString = comboBox2.Items[e.Index].ToString(); //如果當前項是沒有狀態(tài)的普通項 if (e.State == DrawItemState.None) { //在當前項圖形表面上劃一個矩形 g.FillRectangle(new SolidBrush(Color.FromArgb(200, 230, 255)), rect); //在當前項圖形表面上劃上圖標 g.DrawImage(ico, new Point(rect.Left, rect.Top)); //在當前項圖形表面上劃上當前Item的文本 g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top); //將繪制聚焦框 e.DrawFocusRectangle(); } else { e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), rect); g.DrawImage(ico, new Point(rect.Left, rect.Top)); g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top); e.DrawFocusRectangle(); } } } } }
總結:如果僅僅是美化可以選擇使用皮膚控件,但使用重繪更加靈活,可以滿足一些功能上的需求。另外不同的控件還有一些不同重繪事件,可以參照MSDN。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- C#日期控件datetimepicker保存空值的三種方法
- winform dateTime數(shù)據(jù)類型轉換方法
- c# Winform自定義控件-儀表盤功能
- Winform控件Picture實現(xiàn)圖片拖拽顯示效果
- WinForm IP地址輸入框控件實現(xiàn)
- WinForm實現(xiàn)鼠標拖動控件跟隨效果
- winform實現(xiàn)可拖動的自定義Label控件
- C# winform自定義翻頁控件詳解
- C# WinForm實現(xiàn)窗體上控件自由拖動功能示例
- Winform控件SaveFileDialog用于保存文件
- C#中WinForm控件的拖動和縮放的實現(xiàn)代碼
- C# WinForm-Timer控件的使用
相關文章
C#實現(xiàn)上傳照片到物理路徑,并且將地址保存到數(shù)據(jù)庫的小例子
這篇文章主要介紹了c#上傳圖片,并將地址保存到數(shù)據(jù)庫中的簡單實例,有需要的朋友可以參考一下2013-12-12ASP.NET連接sql2008數(shù)據(jù)庫的實現(xiàn)代碼
這篇文章主要介紹了ASP.NET連接sql2008數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下2015-01-01.Net?ORM?訪問?Firebird?數(shù)據(jù)庫的方法
這篇文章簡單介紹了在?.net6.0?環(huán)境中使用?FreeSql?對?Firebird?數(shù)據(jù)庫的訪問,目前?FreeSql?還支持.net?framework?4.0?和?xamarin?平臺上使用,對.Net?ORM?訪問?Firebird?數(shù)據(jù)庫相關知識感興趣的朋友一起看看吧2022-07-07