7

Direct2D で描画できる単純な透明ウィンドウを作成しようとしています。

これまで私がやったこと:

  1. ウィンドウを作成しました
  2. スタイルを WS_EX_LAYERED に設定
  3. アルファ カラー キーを #FFF に設定
  4. Windows Graphics を使用して白い四角形を描画します
  5. ウィンドウはピクセルごとのアルファで透明になりました
  6. 次に、ウィンドウの外にターゲットを作成し、Direct2D を使用して描画します
    • ALPHA _PREMULIPLIED ターゲットにする
    • アルファ0.0fで#FFFでクリア
  7. ウィンドウが黒くなりました

ウィンドウを透明にする方法がわかりません。私の間違いを指摘していただけると助かります

4

2 に答える 2

4

ここでは、DirectComposition API を使用してどのように達成できるかを示します

ロシア語: http://www.oszone.net/25395/

英語: https://msdn.microsoft.com/magazine/dn745861.aspx

基本的に著者がすることは

  1. WS_EX_NOREDIRECTIONBITMAP 拡張スタイルを設定して、DWM のリダイレクト ビットマップを削除します。ウィンドウの内容が空になりました。

  2. DirectComposition デバイスを作成します

  3. コンポジション SwapChain を作成します (hwnd スワップチェーンではありません)。

  4. SwapChain をコンテンツとしてルート ビジュアルとして 1 つのビジュアルを配置します。

  5. Direct2D API を使用して SwapChain にレンダリングします。

WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOSTまた、イベント透過オーバーレイの作成にも適しています。

于 2016-01-28T15:36:49.843 に答える
2

directXでは無理だと思います。ただし、GDI は機能します。

ここのソースを見て、それがどのように行われたかを確認してください: http://pastebin.com/NJf8wi2V

ソースには、directx/opengl の使用を試みるオプションがあることがわかります。ただし、実行してわかるように、それらは機能しません。

于 2013-09-17T10:41:38.033 に答える