我正在尝试使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的边界(这段代码中没有显示),但它们仍然不能很好地匹配。
有人知道怎么做到这一点吗?
发布于 2009-06-11 14:40:34
我终于明白了这一点--我现在看起来很明显。
ToolStripPanelProfessionalRenderer中的ColorTable有三种我们感兴趣的颜色:
ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd
背景需要分两部分绘制--顶部渐变和底部渐变。
顶部从“开始”颜色到“中间”颜色,底部从“中间”颜色到“结束”颜色。
看起来很完美..。
发布于 2009-06-08 20:24:53
检查设置的颜色深度。我们在没有32位颜色的系统上遇到了类似的问题。任何小于32位的颜色都会导致细微的差异。32位颜色系统看起来很好。
我们一直没有找到解决方案,但也许你可以将32位颜色要求强加给你的用户。;-)
https://stackoverflow.com/questions/966496
复制相似问题