相思资源网 Design By www.200059.com
如果你觉得项目中的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。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
WinForm,美化,控件
相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com
暂无使用重绘项美化WinForm的控件的评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
