問題タブ [aero]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows-7 - デスクトップウィンドウマネージャーは画面全体をキャプチャします
Windows Vista / 7で画面全体をキャプチャする方法の出発点を誰かに教えてもらえませんか?以前のバージョンのWindowsでそれを行う方法は知っていますが、GDI / BltBit呼び出しに頼ることなく、すべてをD3Dスタックに保持したいと考えています。
DWM APIを使用してHWNDを使用している場合、特定のウィンドウのライブサムネイルを取得できることはわかっていますが、デスクトップ全体の「サムネイル」を取得するにはどうすればよいでしょうか。
ありがとう、
アレックス
winapi - ウィンドウのスクリーンショット
開いているすべてのウィンドウと最小化されたウィンドウのスクリーンショットを撮ろうとしています。現在、私はこのコードを使用しています: http://www.developerfusion.com/code/4630/capture-a-screen-shot/
ただし、最小化されたウィンドウや、エクスプローラーのタイトル バーのような Vista のようなガラス効果がある領域では機能しません。誰でも私を助けることができますか?
私の目的は、Flip 3D に似たものを作成することです。誰かがライブ プレビューの作成方法について何か知っていれば、それは素晴らしいことです。
windows - デスクトップ コンポジションが有効な場合、ダブル バッファリングは必要ですか?
デスクトップ コンポジションが有効になっている場合でも、ダブル バッファリングは必要ですか?
Microsoft のアプリケーション互換性ガイド:
グラフィカル デバイス インターフェイス (GDI)
Windows Vista および Windows Server 2008 より前は、ウィンドウ ハンドル (HWND) が画面に直接描画されていました。これには一定の利点がありましたが、Windows がトップレベル ウィンドウを表示および管理する方法は制限されていました。Windows Vista および Windows Server 2008 では、すべての最上位ウィンドウがオフスクリーン ビットマップ (WS_EX_LAYERED と同様) にレンダリングされ、デスクトップ ウィンドウ マネージャーが画像を組み合わせてデスクトップを描画します。
すべてのレンダリングがオフスクリーン ビットマップに対して行われるようになりました。
ウィンドウはオフスクリーン ビットマップにレンダリングされます
これは正しいです?
私が尋ねる理由は、標準のペイント サイクル中にまだちらつきが見られるためです。
- WM_ERASEBKGND
- WM_PAINT
デスクトップ コンポジションが有効になっている場合:
私はへの呼び出しの間にそれを想定していたでしょう
すべての描画がバック バッファーで行われることを確認します。
ウィンドウはオフスクリーン ビットマップにレンダリングされます
一方、フロント バッファは影響を受けません。
wpf - WPF:デフォルトでシステムのボタンの背景を使用するカスタムボタンテンプレートを作成するには?
Button の ControlTemplate を変更するスタイルを作成しています (実際には右側に矢印を追加して、ボタンがドロップダウン ボタンのように見えるようにします (wpf にはありません))。
テンプレート内に実際のボタンを配置します (結果をボタンのようにする必要があるため - ContentTemplate のみを変更できますが、実際のコンテンツを矢印と一緒に表示する必要があり、ContentPresenter を ContentTemplate 内に配置するとスタック オーバーフローが発生します - wpf だけテンプレートをプレゼンターに展開し、何度も続けます)、矢印と共に。
私の問題は、ユーザーがボタンの背景を変更できるようにしたいので、バインドする必要があることBackground="{TemplateBinding Background}"
です。これにより、ユーザーは常に背景を提供する必要があり、そうでない場合は null になります。これを防ぐには、背景にデフォルト値を提供する必要があることを理解しているので、追加しました<Setter Property="Background" Value="default Background goes here"/>
問題は、このセッターの値はどうあるべきかということです。wpf の組み込みスタイルはすべてのアプリケーションで自動的に読み込まれると想定し、スタイルを提供する aero.normalcolor.xaml を調べてButtonNormalBackground
、後でデフォルトのボタン スタイルとして使用します<Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
(aero.normalcolor.xaml、47 行目)。
まさに私が望んでいたことですが、このセッターを使用すると、静的リソースが見つかりません。次に、それを DynamicResource に変更しましたが、その場合、ボタンの背景は透明のままです - ButtonNormalBackground は使用されません!
システムのボタンの外観をデフォルト値として提供するにはどうすればよいですか? ありがとうございました!
PS: BorderBrush、BorderThickness の dtto - うわあ、WPF の作成者が常に使用するトリックは許可されていないようです :/
私のスタイル:
windows - Windows Aero:「ガラス」を表示するためにペイントする色は何ですか?
ガラスを表示するには、クライアント領域にどの色を塗る必要がありますか?
以下を使用して、フォームのフレームをクライアント領域に拡張しました。
DWMがガラスに置き換えるために探す色やアルファに関するMicrosoftの公式ドキュメントが見つかりません。DwmExtendFrameInClientAreaのドキュメントには、カスタムカラーが必要であるとさえ記載されていません。特別な色さえ必要であるという伝聞と神話だけがあります。
私が見つけることができる最も近いものは、MSDNのトピックです:
DWMを使用したカスタムウィンドウフレーム
拡張フレームを表示するには、拡張フレームの各辺の下にある領域に、アルファ値が0のピクセルデータが含まれている必要があります。
更新:そしてブログ投稿:
開発者向けWindowsVista–パート3 –デスクトップウィンドウマネージャー
たまたま、RGB黒(0x00000000)のビットパターンは100%透明ARGBのビットパターンと同じであるため、実際に「黒」のGDIブラシで描画でき、DWMにペイントされた領域をぼかすように指示したと仮定します。結果は、望ましいガラス効果になります。
彼らが文字通り言っていること(アルファ値がゼロのピクセルデータ)をとると、アルファがゼロの色を作成し、それを拡張領域にペイントします。
ただし、ガラス効果は表示されません。
引用されたMSDNトピックを無視し、代わりに(完全に透明な黒ではなく)完全に不透明な黒を使用する場合:
ガラス効果が表示されます:
次に、不透明な黒がDWMがガラスに置き換えるために探すピクセル値であると信じるようになります。
しかし、どうすればガラス領域に黒いアイテムをペイントできますか?
ガラス領域に黒い長方形をペイントし、その横に円を描くことをテストしました。奇妙なことに、長方形は表示されませんが、円は表示されます。両方とも同じ色です:
では、世界で何が起こっているのでしょうか?ガラスを表示するために拡張フレーム領域にペイントする適切な色は何ですか?
アップデート2
Adisakの提案を使用して、Aeroの愚かさがどこにあるかを正確に特定します。ここでは、黒い円の内側に黒い長方形を描きます。
FillEllipseは黒丸の描画をサポートしていませんか?
アップデート3
Pondidumは、 Graphics.Clearを透明な黒色で呼び出すと、ガラスが見えるようになるかどうか疑問に思いました。
それは機能しますが、それでもガラスに不透明な黒いアイテムを描くことはできません。
アップデート4
MicrosoftのVistaBridgeLibrary (.NETに追加されないVista機能のマネージラッパー)を見ると、WinFormsではなくWPFフォームで拡張ガラスフレームを機能させることができます。
も参照してください
windows-vista - Vista で Aero をオフにすると動作がおかしくなる
Aero が無効になっているマシンで実行する必要がある directx9 アプリケーションがあります。アプリはウィンドウ モードで実行されます。ウィンドウが最初に作成されたときは、1 つの画面内で問題なく表示されます。同じグラフィックス アダプター (および GPU) に接続された 2 つの画面にまたがるようにウィンドウを移動すると、一方の画面の領域が他方の画面の領域を反映しているように見えます。異なるグラフィックス アダプタに接続された 2 つの画面にまたがっても、問題はありません。
これは、2009 年 8 月の DirectX SDK の「チュートリアル 2: 頂点」など、標準のウィンドウ アプリで簡単に複製できます。
ウィンドウ化された OpenGL アプリケーションでも同じ問題が発生します。
Windows が Aero を有効にして実行されている場合、これは問題ではありませんが、Aero を無効にしてアプリケーションを実行する必要があります。(Aero は、実際のアプリケーションで他の問題を引き起こします。GPU で実行している処理が原因で、予期しないタイミングで独自のバックバッファーをフリップし、レンダリング スレッドで検出できない方法でディスプレイの滑らかさを台無しにします。)
nVidia Quatro 4800 グラフィックス カードを搭載した Windows Vista Enterprise x64 を実行しています。
--そして、nVidia コントロール パネルで 90 度回転した画面を使用する場合にのみ、これが問題になることに気付きました。そうですか…それで?回転した画面を使用する場合、誰かが解決策を提案できますか?
何か案は?
vb.net - AeroglassとVisualBasic.Net
チュートリアルはありますか、またはVB.NETでAeroglassを制御するために使用する簡単なコードはありますか?さまざまなエフェクトを操作する方法と、可能であれば、Paint.NET3.5で実行されるAeroglassエフェクトを実行する方法を知りたいです。(トップバーの内側はまっすぐではありません。
winapi - Win7: Aero を無効にすると、セカンダリ モニターのモニター DC がオフセットされる
シナリオ:
マルチ ディスプレイ マシンでのスクリーン キャプチャ。
セカンダリ モニターの画面をキャプチャする [影響を受ける唯一のモニター]
Aero をオフにします。
次の方法で、セカンダリ モニター用の [新しい] DC を作成します。
結果:
DC は、仮想ディスプレイの間違った部分を「指す」オフセットを取得します。
ここでDCOffset.x
、.y
!= 0 になります
備考:
この動作は Vista では発生しません
Aero オフと DC 作成の間に遅延がある場合、DC がしばらくの間正しい [== オフセットなし] である可能性がありますが、ウィンドウが移動されたり、Z オーダーが変更されたりすると、DC はオフセットを取得します。回避策: オフセットが発生したときに新しい DC を作成します。
影響を受けるグラフィック アダプタ: Intel GMA 4500、Nvidia 9600GT
wpf - Aero は WPF のパフォーマンスに貢献していますか?
WPF の開発をしばらく延期していましたが、ようやく先に進むことを考えています。WPF は、Winforms が占有していた CPU パワーとは異なり、GPU パワー (そうですか?) を使用する、まったく新しいレンダリング "メカニズム" であることがわかります。私が誤解していなければ、このレベルの GPU サポートは Aero に付属しているため、WPF アプリは Aero 環境でのみフル パフォーマンスで実行する必要があります。これは正しいです?つまり、WPF (たくさんのアニメーションとグラスを含む) を実行すると、Win 7 Home Basic や XP ではうまく動作しないのでしょうか?