どのように使用しますDwmGetColorizationColor
か?
ドキュメントには、次の 2 つの値が返されると記載されています。
0xAARRGGBB
ガラス合成に使用される色を含む32 ビット- 「色が不透明なブレンドである場合」に真であるブール値パラメータ (それが何を意味するにせよ)
これは私が好きな色、すてきなピュークグリーンです。
色が緑がかっており、半透明のタイトル バー (白い背景に対して) が鼻水色を非常にはっきりと示していることがわかります。
私はWindowsから色を取得しようとしています:
DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend);
そして、私は得る
dwColorization: 0x0D0A0F04
bIsOpaqueBlend: false
ドキュメントによると、この値の形式はAARRGGBB
であり、以下が含まれます。
AA: 0x0D (13)
RR: 0x0A (10)
GG: 0x0F (15)
BB: 0x04 (4)
これはおそらく、色が (10, 15, 4) で、不透明度が ~5.1% であることを意味します。
しかし、この RGB 値を実際に見ると、私が望んでいたスノット グリーンにはほど遠いものです。ここは
- (10, 15, 4) 不透明度ゼロ (元の色)、および
- (10,15,4) 白/市松模様の背景に対して 5% の不透明度:
Lime
緑ではなくDwmGetColorizationColor
、ほぼ完全に透明な黒を返します。
問題は、Windows Vista/7 でガラスの色を取得する方法です。
を使ってみDwmGetColorizationColor
ましたが、うまくいきません。
同じ問題を抱えている人ですが、リスを引き付けるため
のより良い光沢のある写真:
要約すると、DwmGetColorizationColor は、現在の色を不透明な表面に適用しようとするアプリケーションにはまったく使用できません。
私はこの男のスクリーンショットが私のものよりずっと好きです。彼のスクリーンショットをテンプレートとして使用して、さらにいくつかのキラキラを作成しました。
最後の 2 つのスクリーンショットでは、アルファ ブレンド チップは真に部分的に透明な PNG であり、ブラウザーの背景にブレンドされます。涼しい!(私はそのようなオタクです)
編集 2: それらを虹色に配置する必要がありました。(私はそのようなオタクです)
編集 3: さて、もちろん、黄色を追加する必要があります。
文書化されていない/サポートされていない/壊れやすい回避策
DwmApi.dll
エントリ ポイント 137からの文書化されていないエクスポートがあり、これを次のように呼びDwmGetColorizationParameters
ます。
HRESULT GetColorizationParameters_Undocumented(out DWMCOLORIZATIONPARAMS params);
struct DWMCOLORIZATIONPARAMS
{
public UInt32 ColorizationColor;
public UInt32 ColorizationAfterglow;
public UInt32 ColorizationColorBalance;
public UInt32 ColorizationAfterglowBalance;
public UInt32 ColorizationBlurBalance;
public UInt32 ColorizationGlassReflectionIntensity;
public UInt32 ColorizationOpaqueBlend;
}
最初のパラメーターに関心があります: ColorizationColor
.
レジストリから値を読み取ることもできます。
HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM
ColorizationColor: REG_DWORD = 0x6614A600
したがって、appcompat の問題を作成する毒を選択します。あなたはできる
- 文書化されていない API に依存する (これは悪い、悪い、悪い、いつでもなくなる可能性があります)
- 文書化されていないレジストリ キーを使用します (これも悪いことであり、いつでも消える可能性があります) 。
こちらもご覧ください
- GetThemeColor / Visual Styles API の有効なパラメーターの組み合わせのリストはありますか
- Windows はどのように Aero グラスの色を変更しますか?
- DWM - DWMGetColorizationColor を使用したカラー化の色処理
- 不透明なサーフェス レンダリング用の Aero グラスのベース カラーを取得する
1年以上前からこの質問をしたいと思っていました。答えることは不可能であり、誰かに実際に注意を向けてもらう唯一の方法は、カラフルなスクリーンショットを用意することだと常に知っていました。開発者は光沢のあるものに惹かれます。しかし、マイナス面としては、ルアーを作るためにあらゆる種類の作業をしなければならなかったことを意味します.