2017-05-12 21 views
2

マイクロソフトでは最近、新しい "流暢な"デザインの看板を公開しました。その一部は"acrylic" materialです。このエフェクトは、要素を透明にし、背景をぼかします。下にあるウィンドウの部分(背景アクリル)やウィンドウ内の個々の要素に輝き、他のコントロールが(アプリ内アクリル)を照らすように、ウィンドウに適用することもできます。それは、概念上、視覚的には、macOS上の活力に非常によく似ています。win32アプリのアクリル素材

これはXAMLの特殊ブラシとして実装されていますが、通常のWin32アプリでそれを使用する方法がありますか?この効果は、開始メニューとタスクバー(これはSetWindowCompositionAttributeによって処理される)に適用されたぼかしと非常によく似ています。これは、同様のフラグによって起動可能であると信じさせてくれます。

サブクエリ:どのように実装されているのだろうか?ウィンドウに設定してDWM(SetWindowCompositionAttribute、Vistaや7のAero Glassなど)に適用できるだけのフラグですか?または、UWPはDWMに対して何らかの制御を行い、レンダリング方法を制御するシェーダを設定できますか? Vistaの下では、DWMが初めて導入されたときに、WPFとの共通コードがあり、実際に(DirectXのような)バッファとシーングラフを共有していました。 magifierユーティリティはmagnify WPF apps sharply like vector imagesでしたが、その機能は後で失われました。 MSがそのページ(別のレイヤーとしてXAMLブラシとして実装されている)に「アクリル」を表示する方法は、DWMシーングラフにレイヤーを挿入しなければならないと思うようになり、使用するのが難しくなりますWin32から。

答えて

2

これは、UWPのXAMLコンポジタを使用する下位レベルのXAML Composition APIを使用して作成されるため、Win32でこれをネイティブに達成できるかどうかは疑問です。本当に必要な場合は、デスクトップブリッジを介してアプリを入手してUIを変換するか、または今日利用可能な技術でエフェクトを模倣することができます。 (あなたはアクリル効果をどのように達成するか分かりませんが、Chromeのようなブラウザでは、ウィンドウクロムをアプリケーションに追加して使用することができます)。

2

私はWPFにアクリルを持って、このプロジェクトが見つかりました:あなたの仮説が良かったようだhttps://github.com/bbougot/AcrylicWPF

を。 SetWindowsCompositionAttributeを使用してシェーダを適用します。

+1

これは、Windows 10 Fluent Design Systemの実際のアクリル効果ではありません。 Noise.fxという独自のシェーダエフェクトを使用し、独自のプロセスで動作します。ぼかし効果は 'SetWindowsCompositionAttribute'ですが、推奨されません。 Fluent Design Systemのアクリルブラシをシミュレートするだけです。 – walterlv