宝哥软件园

用重画的项目美化WinForm的控件

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

如果您认为项目中的ComboBox、ListBox或其他Winforms控件不能满足您的显示要求,那么包括表单在内的很多控件都支持重绘来修改显示样式。下面的例子完成了ComBox数据项的重绘,希望能起到吸引更多关注的作用。

显示源代码

使用系统;使用系统。集合。通用;使用系统。ComponentModel使用系统。数据;使用系统。绘图;使用系统。Linq使用系统。文字;使用系统。Windows .窗体;命名空间SimpleDemo{ public分部类frmDrawItem : Form { public frmDrawItem(){ InitializeComponent();//指定绘图模式,必须指定为,ownerdrawfixed,ownerdrawsvariable//normal由操作系统绘制,元素大小都相等。//OwnerDrawFixed是手工绘制的,元素大小都相等。//OwnerDrawVariable是手工绘制的,元素的大小可能不相等。组合框2。DrawMode=DrawMode。OwnerDrawFixed}//重绘项目事件私有void combobox2 _ drawitem(对象发送方,draw item eventargs e){//获取要在其上绘制项目的图形表面Graphics g=e . Graphics//获取矩形系统。drawing.rectangle rect=e.bounds表示所绘制项目的边界;//定义要绘制到控件imageico=image . from file(' head . png ')中的图标图像;//定义字体对象系统。drawing.fontfont=新系统。drawing.font(新font family(‘12’);If (e.Index=0) {//获取当前Item字符串tempstring=combobox2的文本。项目[例如索引]。tostring();//如果当前项是没有状态if的普通项(例如state==drawitemstate。none){//绘制矩形g .填充矩形(新的实心画笔(颜色。来自当前项目的图面上的argb (200,230,255))、rect);//标记图标g. drawimage (ico,new point (rect。左,右。top))在当前项目的图形表面上;//在当前项目的图形表面绘制当前项目的文本g . drawling(tempstring,font,new solid brush (color.black),rect . left co . size . width,rect . top);//将绘制焦点框e . drafocusrectangle();} else { e.Graphics.FillRectangle(新的SolidBrush(颜色。LightBlue),rect);绘图图像,新点。左,右。top));抽绳(临时字符串,字体,新的SolidBrush(颜色。黑色),矩形。左ico。尺寸,宽度,矩形。top);e .drafocus矩形();}}}}}总结:可以选择使用皮肤控件只是为了美化,但是重绘更加灵活,可以满足一些功能需求。另外,不同的控件有一些不同的重绘事件,可以参考MSDN。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+