将背景图像应用于Menustrip子菜单项

时间:2012-05-10 22:39:24

标签: c# winforms background controls menustrip

我创建了这个表单和一个自定义函数,用一个黑暗的表单背景绘制控件的背景。

enter image description here

悬停时,控制区域会突出显示,是否有此颜色的访问者?像menustrip.Highlight Color?

enter image description here

我也无法找到子菜单的访问者。我已经看过msdn并且已经找到了关于改变整个主题的能力的文章,只有颜色,没有关于如何设置背景图像的信息。我搜索过SO并发现了类似的主题,但没有一个回答我的问题,或者足够接近推断正确的答案。任何援助都会受到极大的关注。用C#编写。此外,子菜单是否存在于控件列表中?

2 个答案:

答案 0 :(得分:2)

您应该使用ToolStripRenderer来自定义菜单外观。将渲染器指定给菜单并调用invalidate:

menuStrip.Renderer = new ToolStripProfessionalRenderer(new DarkColorTable());
menuStrip.Invalidate();

如您所见,渲染器需要颜色表。您应该创建自定义颜色并覆盖要自定义的所有颜色:

public class DarkColorTable : ProfessionalColorTable
{
    public override Color MenuStripGradientBegin
    {
        get { return Color.FromArgb(128, Color.Black); }
    }

    public override Color MenuStripGradientEnd
    {
        get { return Color.FromArgb(128, Color.Black); }
    }

    public override Color ButtonSelectedHighlight
    {
        get { return Color.FromArgb(64, Color.Black); }
    }

    // etc
}

答案 1 :(得分:1)

 Private Sub BackImageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BackImageToolStripMenuItem.Click
 Me.MenuStrip1.BackgroundImage=Form1.My.Resources.Resources.nature 'where nature is image name
    BackImageToolStripMenuItem.Checked = True
End Sub