我正在尝试让ToolStripPanel具有与嵌入式ToolStrips相同的绘图样式,以便它看起来像一个连续的栏。我有ToolStrips使用ToolStripProfessionalRenderer,因此它们的样式与Windows任务栏相同。
通过创建一个派生自ToolStripProfessionalRenderer的新渲染器,我已经接近了:
class CustomRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs e)
{
base.OnRenderToolStripPanelBackground(e);
LinearGradientBrush lgb = new LinearGradientBrush(e.ToolStripPanel.ClientRectangle, this.ColorTable.ToolStripGradientBegin, this.ColorTable.ToolStripGradientEnd, LinearGradientMode.Vertical);
e.Graphics.FillPath(lgb, e.ToolStripPanel.ClientRectangle);
}
}
这会创建具有正确颜色的渐变外观,但它们不匹配得恰到好处。似乎渐变具有更多的颜色,因此传播的时间更长。
我已经考虑了ToolStrips的边框(这段代码中未显示),但它们仍然不匹配。
任何人都知道如何实现这一目标?
答案 0 :(得分:2)
我终于明白了 - 我现在看起来很明显。
ToolStripPanelProfessionalRenderer中的ColorTable有三种我们感兴趣的颜色:
ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd
背景需要分为两部分 - 顶部渐变和底部渐变。
顶部从“开始”颜色变为“中间”颜色,底部从“中间”颜色变为“结束”颜色。
看起来很完美......
答案 1 :(得分:1)
检查设置的颜色深度。我们在没有32位颜色的系统上遇到了类似的问题。任何小于32位颜色的东西都会产生微妙的差异。 32位色彩系统看起来很好。
我们从未找到过解决方案,但也许您可以将32位颜色要求推送给用户。 ; - )