0

ToolStripPanel を埋め込まれた ToolStrips と同じ描画スタイルにして、1 つの連続したバーのように見せようとしています。Windows タスク バーと同じスタイルになるように、ToolStripProfessionalRenderer を使用して ToolStrips を作成しました。

ToolStripProfessionalRenderer から派生した新しい Renderer を作成することで、私はそれに近づきました。

   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 の境界線 (このコードには表示されていません) を考慮しましたが、まだ完全に一致していません。

これを実現する方法を知っている人はいますか?

4

2 に答える 2

2

私はついにこれを理解しました-そして、今ではとても明白に思えます。

ToolStripPanelProfessionalRenderer の ColorTable には、関心のある 3 つの色があります。

ColorTable.ToolStripGradientBegin ColorTable.ToolStripGradientMiddle ColorTable.ToolStripGradientEnd

背景は、上部のグラデーションと下部のグラデーションの 2 つの部分でペイントする必要があります。

上は「Begin」の色から「Middle」の色まで、下は「Middle」の色から「End」の色までです。

完璧に見える...

于 2009-06-11T14:40:34.027 に答える
1

セットアップの色深度を確認してください。32 ビット カラーを持たないシステムでも同様の問題が発生しました。32 ビット カラー未満の場合は、微妙な違いが生じました。32 ビット カラー システムは問題なく表示されました。

解決策は見つかりませんでしたが、32 ビット カラーの要件をユーザーに押し付けることができるかもしれません。;-)

于 2009-06-08T20:24:52.753 に答える