これはかなり長い間私に興味をそそられました。
現在実行中のアプリのタスクバーボタンのホットトラッキングホバーハイライトとして使用する色を決定するためにWindows7 Aeroが使用するアルゴリズムを知っている人はいますか?
それは間違いなくアプリのアイコンに基づいていますが、色の値を取得している場所の特定のパターンを見ることができません。
それはではないようです:
Ux.stackoverflow.comでこの質問をしたところ、トピック外としてクローズされましたが、誰かが次のように答えました。
Raymond Chenが このMSDNブログ記事 で説明しているように:
一部の人々はそれがどのように行われるかを尋ねます。それは本当に特別なことではありません。コードは、アイコン内の優勢な色を探すだけです。 (そして、ビジュアルデザイナーはこの種のことにこだわるので、黒、白、および灰色の色合いは、この計算の目的では「色」とは見なされません。)
しかし「優勢な」色がどのように計算されるかを説明していないので、私はその答えに本当に満足していませんでした。確かに、SQL Management Studioアイコンでは、少なくとも私の目には、主な色は黄色です。しかし、ハイライトは緑色です。 具体的には、アルゴリズムとは何か知りたいです。
から Windows 7デスクトップへようこそ 正確に35分で:
これは27の異なるバケットにわたる正規化されたカラーヒストグラムであり、黒、白、アルファチャネル、およびグレーを抽出し、最も支配的なRGBV [原文のまま]値を使用します...
「RGBV」は問題ではないように思われるので、スピーカーが「RGB」と言うつもりだったと私はかなり確信しています。 「正規化された」部分は実際には重要ではありません。各「バケット」に含まれるピクセル数を効果的にカウントしています。したがって、各ピクセルは、各チャネルの値の位置に基づいて、27個のバケット(3次元配列に配置されます。27の立方根は3)の1つに配置されます。 Windowsは、各カラーチャネルについて、その色の強度が範囲の下部、中間、または上部のチャンクにあるかどうかを判断します。範囲は約0〜60、60〜200、および200〜255のように見えます。完全に透明なピクセルはまったく含まれていません。
次に、Windowsは、黒、白、灰色のバケット(3つのチャネルすべてが範囲の同じ3分の1にあるバケット)を無視して、ピクセルが最も多いバケットを見つけます。これは、SQL Server Management Studioアイコンを説明しています。黄色で表示されるものの多くは、実際には「白い」バケットにダンプされ、無視されます。
許容可能なバケットのいずれにもピクセルがない場合、システムの配色に関係なく、プログラムは水色のオーバーレイを取得します。 (コマンドプロンプトを参照してください。)プログラムにアイコンがない場合、Windowsのデフォルトアイコンが青または緑のオーバーレイを生成する場合でも、プログラムは白/半透明のオーバーレイを取得します。
複数のプログラムが同じハイライトカラーを持つのを止めるものは何もありません。たとえば、最新のChromeアイコンは、Windows8のエクスプローラーと同じ黄色になります。
同点の場合、画像の色の順序に依存しない所定の順序があります。これはおそらく、最大値が検出された方法の結果です。前にチェックされたバケットは、後のバケットが同点になった場合でも、引き続き最大値になります。黄色は最初にチェックされたバケットの1つであるようです。
勝者のバケットが見つかると、ハイライトの色はバケットの範囲の中央のどこかに設定されているように見えます。
テストケース(提供されている数値はRGB値です):
(255、247、209)→デフォルトのハイライト
(47、0、0)→デフォルトのハイライト
(60、0、0)→濃い赤
(66、0、0)→濃い赤
(165、0、0)→赤
(128、128、128)→デフォルトのハイライト
(0、148、255)および(255、0、0)→赤
(0、255、0)と(255、216、0)同じ面積→黄色
同じですが反転→黄色
(255、180、180)→ライトレッド
(255、210、210)→デフォルトのハイライト
同じ面積の純粋な青、純粋な黄色、純粋な赤、純粋な緑→黄色
(255、61、61)→赤
(82、0、0)→濃い赤
私の推測では、各色について、上から順にR、G、およびBの値を取得し、それらから3つの最高値と最低値を取得して比較します。最高と最低の間に最大のギャップがある色は、画像内で最も明るい色になります。たとえば、Chromeアイコンの場合、最大のギャップのためにいくつかの色が結び付けられている可能性がありますが、赤が上にあるため、最初に遭遇します。したがって、それが支配的です。その画像。(Chromeロゴを120度回転させて、代わりに緑または黄色が優勢かどうかを確認するなど、独自のアイコンをデザインすることで、これをテストできると思います。)
私の理解では、OSは色を決定する際にいくつかの要素を考慮に入れています。
これは非常に間違っている可能性があり、ほとんどが推測ですが、これにより、OSが色を決定するために使用できる方法を簡単に理解できます。また、事前定義された色のないプログラムと、同じ量の色を使用するアイコンに白/茶色/黒が割り当てられない方法と、黒、白、灰色が割り当てられない理由についても説明します。また、アイコンがないプログラム(まだいくつかあります)は透明なホットトラッキングカラーを表示することに注意してください。これにより、カーソルを合わせるとアイコンが「明るく」なります。
ハッシュタグを越えてコードを評価するサーバーサイド言語であるHTMLですでに機能しており、ページのフォントの色を変更することで、いくつかのエントリが書き込まれ、それぞれがHTCOne-timeに送信されます。 Hypertexプロトコルロック転送が連絡先のサーバーに再度送信され、サーバーが画面の背後にないことをロックして、ボタンを押して応答できるようにします。メッセージのように機能する0077ccの影も確認してください。 SMSメッセージの受信または富の横方向の分割。このSMSでは、HTMLおよび受信メッセージはHTMLメッセージです。
その後、ハッシュタグの色合いの割合、モノクロの色、影のテキストをエンコードする必要があります