讲解:自己做出VB.NET风格的右键菜单
2008-03-28 07:06:14来源: 阅读 ()
此主题相关图片如下:class MyMenuItem : System.Windows.Forms.MenuItem
以下是引用片段: { public MyMenuItem() { //这里很重要,必须把OwerDraw设为true,这样可以自己画菜单,否则便是让操作系统画菜单了,默认的是false this.OwnerDraw=true; } protected override void OnDrawItem(SysDrawItemEventArgs e) { //要重画菜单,是没有OnPaint方法重载的,只有重载OnDrawItem方法! Graphics g=e.Graphics; g.SmoothingMode=SmoothingMode.AntiAlias;//抗锯齿 Font f = new Font(FontFamily.GenericSerif, 12, FontStyle.Regular, GraphicsUnit.Pixel);//设定菜单的字体 Pen p=new Pen(Color.Navy,1);//这是画边框的字体 if(e.State==DrawItemState.NoAccelerator)//一开始右键单击出现菜单,但是鼠标并没有移上去 { //用白色的底色 g.FillRectangle(Brushes.WhiteSmoke,e.Bounds.X-2,e.Bounds.Y-2,121,23); } //鼠标移上去,但是并没有单击 if ((e.State &DrawItemState.Selected)==DrawItemState.Selected) { //花边框和底色 g.FillRectangle(Brushes.LightSteelBlue,e.Bounds.X,e.Bounds.Y,109,20); g.DrawLine(p,e.Bounds.X,e.Bounds.Y,e.Bounds.X,e.Bounds.Y+19); g.DrawLine(p,e.Bounds.X,e.Bounds.Y+19,e.Bounds.X+109,e.Bounds.Y+19); g.DrawLine(p,e.Bounds.X+109,e.Bounds.Y+19,e.Bounds.X+109,e.Bounds.Y); g.DrawLine(p,e.Bounds.X+109,e.Bounds.Y,e.Bounds.X,e.Bounds.Y); } //显示文字 g.DrawString(this.Text,f,Brushes.Black,e.Bounds.X,e.Bounds.Y); g.Dispose(); } //这是很重要的,这给你的菜单定义了大小,高20,宽100,否则你的菜单什么也看不到 protected override void OnMeasureItem(MeasureItemEventArgs e) { e.ItemHeight=20; e.ItemWidth=100; } } |
说明:这里我没有画按钮按下时的样子(懒:),主要是以后进一步改进),当然也没有画图标,也是为了以后改进,这只是一个初步的形态,大家看看有什么更高的方法?!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:VB创建多线程应用程序
下一篇:静态变量慢于动态变量
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash