Winform MenuStrip 更改选择背景色
一、自定义MenuStrip render
项目时,觉得自带菜单项选中颜色与项目不匹配,想要更改,多方查询总结出方法。
初始化时 将this.menustrip1.render=new myselfrender();设置为自己重写的render类。
public class CustomProfessionalRenderer:ToolStripProfessionalRenderer{Font textFont = new System.Drawing.Font("微软雅黑", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));private Color menuItemSelectedColor = Color.Gray;private Color menuItemBorderColor = Color.Black;/// <summary>/// Initialize a new instance of the Visual Studio MenuBarRenderer class./// </summary>public CustomProfessionalRenderer(): base(new MenuBarColor()){this.menuItemSelectedColor = Color.LightSteelBlue;this.menuItemBorderColor = Color.LightSteelBlue;}protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e){e.TextFont = textFont;base.OnRenderItemText(e);}#region Backgroundsprotected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e){ if (e.Item.IsOnDropDown){if (e.Item.Selected == true && e.Item.Enabled){DrawMenuDropDownItemHighlight(e);}}else{base.OnRenderMenuItemBackground(e);}}protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e){ToolStrip toolStrip = e.ToolStrip;Graphics g = e.Graphics;g.SmoothingMode = SmoothingMode.HighQuality;//抗锯齿Rectangle bounds = e.AffectedBounds;LinearGradientBrush lgbrush = new LinearGradientBrush(new Point(0, 0), new Point(0, toolStrip.Height), Color.FromArgb(200, Color.FromArgb(48,61,69)), Color.FromArgb(200, Color.FromArgb(48, 61, 69)));if (toolStrip is MenuStrip){//由menuStrip的Paint方法定义 这里不做操作}else if (toolStrip is ToolStripDropDown){int diameter = 10;//直径GraphicsPath path = new GraphicsPath();Rectangle rect = new Rectangle(Point.Empty, toolStrip.Size);Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));path.AddLine(0, 0, 10, 0);// 右上角arcRect.X = rect.Right - diameter;path.AddArc(arcRect, 270, 90);// 右下角arcRect.Y = rect.Bottom - diameter;path.AddArc(arcRect, 0, 90);// 左下角arcRect.X = rect.Left;path.AddArc(arcRect, 90, 90);path.CloseFigure();toolStrip.Region = new Region(path);g.FillPath(lgbrush, path);}else{base.OnRenderToolStripBackground(e);}}protected override void OnRenderImageMargin(ToolStripRenderEventArgs e){// base.OnRenderImageMargin(e);}#endregion#region DrawMenuDropDownItemHighlightprivate void DrawMenuDropDownItemHighlight(ToolStripItemRenderEventArgs e){Rectangle rect = new Rectangle();rect = new Rectangle(2, 0, (int)e.Graphics.VisibleClipBounds.Width - 4, (int)e.Graphics.VisibleClipBounds.Height - 1);using (SolidBrush brush = new SolidBrush(menuItemSelectedColor)){e.Graphics.FillRectangle(brush, rect);}using (Pen pen = new Pen(menuItemBorderColor)){e.Graphics.DrawRectangle(pen, rect);}}#endregion}public class MenuBarColor : ProfessionalColorTable{Color ManuBarCommonColor = Color.LightSteelBlue;Color SelectedHighlightColor = Color.FromArgb(253, 244, 191);Color MenuBorderColor = Color.White;Color MenuItemBorderColor = Color.FromArgb(48,61,69);Color MenuStripbg = Color.Transparent;/// <summary>/// Initialize a new instance of the Visual Studio MenuBarColor class./// </summary>public MenuBarColor(){}#region/ <summary>/ 获取选中除顶级 System.Windows.Forms.ToolStripMenuItem 之外的 System.Windows.Forms.ToolStripMenuItem 时,要使用的纯色。/ </summary>//public override Color MenuItemSelected//{// get// {// return SelectedHighlightColor;// }//}/// <summary>/// 被按下时使用的渐变的开始颜色/// </summary>public override Color MenuItemPressedGradientBegin{get{return MenuStripbg;}}/// <summary>/// 被按下时使用的渐变的结束颜色/// </summary>public override Color MenuItemPressedGradientEnd{get{return MenuStripbg;}}/// <summary>/// 被按下时使用的渐变的中间颜色/// </summary>public override Color MenuItemPressedGradientMiddle{get{return MenuStripbg;}}/// <summary>/// 获取按钮被选定时使用的纯色/// </summary>public override Color ButtonSelectedHighlight{get{return ManuBarCommonColor;}}/// <summary>/// 被选定时使用的渐变的开始颜色/// </summary>public override Color MenuItemSelectedGradientBegin{get{return ManuBarCommonColor;}}/// <summary>/// 被选定时使用的渐变的结束颜色/// </summary>public override Color MenuItemSelectedGradientEnd{get{return ManuBarCommonColor;}}/// <summary>/// MenuStrip 上使用的边框颜色/// </summary>public override Color MenuBorder{get{return MenuBorderColor;}}/// <summary>/// ToolStripMenuItem 的边框颜色/// </summary>public override Color MenuItemBorder{get{return MenuItemBorderColor;}}#endregion}
Winform MenuStrip 更改选择背景色相关推荐
- PhotoShop更改图片背景色
PhotoShop更改图片背景色 操作步骤如下所示: 打开图片==>图像/调整/替换颜色==>选择颜色==>选择油漆桶工具==>点击需要被替换的图片背景色 注:不知道什么原因 ...
- 无法更改计算机背景色,Win10主题更改后背景色无法变更?这个设置麻烦禁用下...
原标题:Win10主题更改后背景色无法变更?这个设置麻烦禁用下 喜欢追求个性化的用户会选择更改他们的Win10系统主题,以使他们的屏幕不再呆板统一.为了获得满意的结果,有时候还需要调整背景色.但是,一 ...
- 2020印象笔记更改笔记背景色护眼色方法
先给大家看一下更改好后的效果 更改背景色操作,具体操作是: 先随便创建一个笔记,然后随便输入几个字,点击创建的笔记,右击,选择导出,然后导出为enex格式点击确定 然后右击导出的文件,打开方式中选择记 ...
- 匹配指定内容的div_HTML背景色教程–如何更改Div背景色,并通过代码示例进行了说明...
作为Web开发人员,最常见的事情之一就是更改HTML元素的背景颜色.但是,如果您不了解如何使用CSS background-color属性,可能会产生混淆.在本文中,我们讨论以下几点 1.HTML元素 ...
- div背景色更改 闪烁_HTML背景色教程–如何更改Div背景色,并通过代码示例进行了说明
div背景色更改 闪烁 One of the most common things you may have to do as a web developer is to change the bac ...
- C# WinForm 文件夹选择控件 folderBrowserDialog 的应用实例
上期文章<使用 C# 修改文件创建时间>中有文件夹选择控件,但并没有提到如何使用,所以这次主要是针对这个控件讲下如何使用的一些细节.就两个动作,请看下图: 1.从工具箱中"双击& ...
- c语言vc怎么改变背景板颜色,vc6.0中更改对话框背景色和字体颜色
方法一:设置所有窗口的颜色 MFC程序修改对话框的背景和文字颜色最简单的方法就是调用SetDialogBkColor函数,SetDialogBkColor是CWinApp类的成员函数,以下是该 ...
- C#WinForm程序中选择打印机打印
之前写程序,调用Microsoft.Office.Interop.Word动态生成doc文档并打印. 由于在打印时直接实例化一个Word.Document对象,并使用其PrintOut()方 ...
- C# winform 打开文件选择对话框
微软文档: https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.win32.openfiledialog?view=netframework-4 ...
最新文章
- Qt的Socket通信
- 隐含马尔可夫模型在语言处理中的应用(Z)
- Java的内置垃圾收集如何使您的生活更美好(大部分时间)
- 英语流利说 第32天
- 【Flink】flink并行度与kafka分区(partition)设置
- python找不到文件数据_如何用 Python 正确读取资源文件
- 三方应用集成_华为携手利尔达完成业界首个5G工业智能网关预商用集成验证
- nginx的配置笔记
- 一个人学的软件测试,到底有多难?
- 百度编辑器上传图片配置php,谁配置过百度编辑器ueditor1.4.3的图片上传路径?
- java文件写入blob_java程序向IQ写入blob(image)类型数据问题的解决
- Tomcat中文乱码解决
- Gyro陀螺仪 > MPU 6000 vs ICM 20689
- 在w ndoWS7中屏幕保护程序,怎么设置Windows 7屏幕保护时间
- 【绘制关系网络图】Gephi 入门使用
- 易捷行云EasyStack入选2021信创云TOP10
- 【SQL注入技巧拓展】————13、我的WafBypass之道(SQL注入篇)
- python图像倾斜校正_霍夫变换 文本图片倾斜矫正 python实现
- yolov5方框的颜色及粗细更改
- BadUSB的前世今生:USB RUBBER DUCKY和Teensy USB
热门文章
- CSS常用伪元素详解
- 股票l2接口与普通的l1区别在哪里?
- 基于人工智能技术的的拥塞控制的基本原理—— PCC Vivace
- 如何在UBUNTU虚拟机上编译EOS完成环境搭建?(附代码)
- let,const,let和use strict
- @RequestBody axios post请求400 bad request
- 【TP5源码】获取项目的根目录
- Detecting Unstable Periodic Orbits in Chaotic Experimental Data (解析)
- 北大全国计算机竞赛,学科竞赛第一名保送北大,和高考全国第一名进北大相比,谁更强?...
- 如何将Word快速转为PPT?