2009-06-08 11 views
0

ToolStripPanelを埋め込みToolStripと同じ描画スタイルにして、1つの連続バーのように見せようとしています。 ToolStripProfessionalRendererを使用してToolStripを使用して、Windowsのタスクバーと同じようにスタイルを設定します。C#ToolStripPanel Drawing Question

私は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); 
     } 
    } 

は、これは正しい色でグラデーションの外観を作成しますが、彼らは非常にすぐに一致していません。グラデーションの色数が多いように見えるので、スプレッドが長く引き出されます。

私はToolStripの境界線(このコードには表示されていません)を説明しましたが、それでもまだまったく一致しません。

これを行う方法を知っている人は誰ですか?

答えて

2

私はついにこのことを理解しました。トップ勾配 -

ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd

背景は2つの部分に塗装する必要があります

ToolStripPanelProfessionalRendererでCOLORTABLEは、我々が興味を持っている3色を持っています、および底部のグラジエント。

トップは 'Begin'カラーから 'Middle'カラーになり、ボトムは 'Middle'カラーから 'End'カラーになります。

完璧に見える...

1

設定の色の濃さを確認してください。 32ビットカラーを持たないシステムでも同様の問題がありました。 32ビットカラー未満のものは、微妙な違いが生じました。 32ビットカラーシステムは上手く見えました。

私たちは決して解決策を見つけたことはありませんでしたが、32ビットの色の要件をユーザーに押し付けることができます。 ;-)

+0

私はそれを考えていませんでした。残念ながら、それはトリックをしませんでした:(私はちょうどアイデアを放棄すべきだと思うようになり始めている。 – Matt