C#菜单提示面板视觉异常
我正在给菜单条上色以匹配我的应用程序主题。然而,每次我尝试它时,我都会在面板分隔符(白色矩形)的左侧看到这种奇怪的视觉异常,也有一些奇怪的复选框位置(可能相关?) 这是什么原因造成的,如何消除 多谢各位 示例代码:C#菜单提示面板视觉异常,c#,winforms,menuitem,menustrip,C#,Winforms,Menuitem,Menustrip,我正在给菜单条上色以匹配我的应用程序主题。然而,每次我尝试它时,我都会在面板分隔符(白色矩形)的左侧看到这种奇怪的视觉异常,也有一些奇怪的复选框位置(可能相关?) 这是什么原因造成的,如何消除 多谢各位 示例代码: private Color MainColor=Color.FromArgb(39,40,34); 公共类MenuStripRenderer:ToolStripProfessionalRenderer { 受保护的覆盖无效OnRenderNuItemBackground(Tool
private Color MainColor=Color.FromArgb(39,40,34);
公共类MenuStripRenderer:ToolStripProfessionalRenderer
{
受保护的覆盖无效OnRenderNuItemBackground(ToolStripItemRenderReventArgs e)
{
矩形rect=新矩形(Point.Empty,e.Item.Size);
如果(如所选项目)
{
Color=Color.FromArgb(24,25,19);
使用(SolidBrush笔刷=新的SolidBrush(颜色))
e、 图形。填充矩形(画笔,矩形);
}
其他的
{
使用(SolidBrush笔刷=新的SolidBrush(主颜色))
e、 图形。填充矩形(画笔,矩形);
}
}
受保护的覆盖无效OnRenderItemText(ToolStripItemTextRenderReventArgs e)
{
e、 Item.ForeColor=颜色.白色;
base.OnRenderItemText(e);
}
受保护的替代无效OnRenderSeparator(ToolStripSeparator RenderReventArgs e)
{
基于渲染器分离器(e);
}
公共MenuStripRenderer():基本(新MenuStripColor()){}
}
公共类菜单颜色:ProfessionalColorTable
{
公共覆盖颜色工具StripDropDownBackground
{
获取{return MainColor;}
}
公共覆盖颜色工具StripContentPanelGradientBegin
{
获取{return MainColor;}
}
公共覆盖颜色工具StripContentPanelGradientEnd
{
获取{return MainColor;}
}
已选择公共覆盖颜色菜单项
{
获取{return MainColor;}
}
公共覆盖颜色菜单项顺序
{
获取{return MainColor;}
}
公共覆盖颜色菜单ItemSelectedRadientBegin
{
获取{return MainColor;}
}
公共覆盖颜色菜单emSelectedGradientEnd
{
获取{return MainColor;}
}
公共覆盖颜色菜单项顺序
{
获取{return MainColor;}
}
}
//在表单Load()中
this.menuStrip1.Renderer=新的MenuStripRenderer();
this.menuStrip1.BackColor=MainColor;
this.menuStrip1.ForeColor=Color.White;
我认为您也必须覆盖ImageMargin绘图:
protected override void OnRenderImageMargin(ToolStripRenderEventArgs e) {
//base.OnRenderImageMargin(e);
using (SolidBrush brush = new SolidBrush(MainColor)) {
e.Graphics.FillRectangle(brush, e.AffectedBounds);
}
}
我不知道是什么原因导致您的复选标记问题,因为我无法在我的机器上复制该问题。我猜这可能是您的windows中的图形DPI设置。关于白色矩形,您是对的!非常感谢。我将使用我的DPI设置,看看会发生什么。我在4k显示器上运行,所以我的缩放率大约为225%