当前位置: 移动技术网 > IT编程>开发语言>.net > 使用重绘项美化WinForm的控件

使用重绘项美化WinForm的控件

2017年10月21日  | 移动技术网IT编程  | 我要评论

邱光华,侠盗猎车手圣安地列斯mod下载,伏尔塔瓦河听后感

如果你觉得项目中的combobox、listbox或其它的winforms控件不能满足你的显示要求,包括窗体在内很多控件都支持重绘修改显示样式。下面的示例完成对combox数据项的重绘,希望能起到抛砖引玉的作用。

显示源代码

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 由操作系统绘制,并且元素大小都相等。 
   //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();
    //如果当前项是没有状态的普通项
    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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网