2

現在のAeroスタイルに関連するシステムカラーを取得するにはどうすればよいですか?特に、選択グラデーションで使用される色が必要です。SystemColors構造に必要な色が含まれていません。

エアロカラー

または、WinAPIを使用して特定のキャンバス(グラフィックスオブジェクト)に選択範囲を描画するにはどうすればよいですか?

4

2 に答える 2

1

さて、最初の質問に対する答えは次のとおりです。私が求めた特定の色を決定する方法はありません。これは、OSが提供する内部テーマルーチンによって評価されます。

幸いなことに、OSにテーマのあるコントロール、いわゆるパーツを描画するように依頼する方法があります。.NETには、UIを描画するための2つのクラスがあります。

私が求めた選択は、次のコードで描画される可能性があります。

// Graphics g = ...
VisualStyleRenderer selectionRenderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Item.Selected);
selectionRenderer.DrawBackground(g, someRectangle);

残念ながら、デフォルトのウィンドウテーマではサポートされていTreeView.Item.Selectedません。ListView.Item.Selectedただし、p/invokeを介してWinAPIを使用してテーマをエクスプローラに切り替えることができます。

// C++
SetWindowTheme(hwnd, L"Explorer", nullptr);

そして、P /は、完全に機能するいくつかのUXTheme.hルーチンを介して彼の方法を呼び出します。

于 2012-12-26T11:22:57.837 に答える
0

選択されたテキストと選択されたメニュー項目も含む、選択された項目の背景のシステム定義の色は、次の場所にあります。System.Drawing.KnownColor.Highlight

次に、構造体を使用して、Colorから色を取得できます。KnownColor

System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Highlight);

ありがとう、
ハッピーホリデー!:)

于 2012-12-26T10:35:46.487 に答える