toolStrip如何具有menuStrip渐变背景

5

我有一个带有菜单和工具栏的表单。菜单栏有一个漂亮的渐变背景,如何在工具栏控件上获得相同的效果?我知道RenderMode属性,但更改它不会产生期望的结果。

toolStrip background


没有这个属性。如果您想为此创建渐变图像,则有BackgroundImage属性。 - Colin Steel
你如何渲染你的MenuStrip以获得这样的“渐变背景”?我的意思是,如果你知道如何渲染它,你可能想要将相同的渲染应用于ToolStrip,以便两者的背景都相同。 - King King
menuStrip是一个普通的menuStrip控件,RenderMode设置为“ManagerRenderMode”,这是默认值。我不知道它是如何呈现的。我该如何将相同的渲染器应用于toolStrip? - PaulK
MenuStrip和StatusStrip具有水平渐变,而ToolStrip具有垂直渐变。微软这样做很奇怪。 - deegee
1个回答

1
您可以通过自定义渲染器来实现此操作。
public class CustomToolStripRenderer : ToolStripProfessionalRenderer
{
    public CustomToolStripRenderer() { }

    protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
    {
        //you may want to change this based on the toolstrip's dock or layout style
        LinearGradientMode mode = LinearGradientMode.Horizontal;

        using (LinearGradientBrush b = new LinearGradientBrush(e.AffectedBounds, ColorTable.MenuStripGradientBegin, ColorTable.MenuStripGradientEnd, mode))
        {
            e.Graphics.FillRectangle(b, e.AffectedBounds);
        }
    }
}

然后设置你的工具栏使用此渲染器的实例。
public Form1()
{
    InitializeComponent();

    CustomToolStripRenderer r = new CustomToolStripRenderer();
    r.RoundedEdges = false;

    toolStrip1.Renderer = r;
}

请注意,当ToolStrip包含具有下拉菜单的项目时,此功能无法按预期工作。下拉菜单背景也将变为渐变绘制。 - deegee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接