問題タブ [layered-windows]
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.
winapi - 親ウィンドウに画像を使用して半透明の子ウィンドウを描画する
ウィンドウで鳥のアニメーションを作成する必要がありWS_OVERLAPPED
ます(以下を参照)。アニメーションは8つの画像で表されます。
画像の青色(つまりRGB(0, 255, 255)
)は透明である必要があります(下のスクリーンショットを参照)。
引数CreateWindowEx()
付きで(鳥はレイヤードウィンドウで表されます)これを実行したかったのです。WS_EX_LAYERED
残念ながら鳥はしなければなりませんWS_CHILD
。混合はWindows7ではWS_EX_LAYERED | WS_CHILD
合法ではありません:
Windows 8: WS_EX_LAYEREDスタイルは、トップレベルウィンドウと子ウィンドウでサポートされています。以前のバージョンのWindowsは、トップレベルのウィンドウに対してのみWS_EX_LAYEREDをサポートします。
最終的な効果は次のようになります(ウィンドウの背景は既にペイントしています。唯一の問題は鳥です)。
どうすればこの効果を達成できますか?親ウィンドウで鳥をアニメートする方法は?
透明な背景色で鳥のアニメーションを実装する方法について何かアイデアがあれば、共有してください。
c# - レイヤードウィンドウの領域のみを再描画するにはどうすればよいですか?
私は通常このように描かれるレイヤードウィンドウを持っています:
ただし、これは明らかに、呼び出されるたびにウィンドウ全体を再描画します。これは、大きなウィンドウではかなりのパフォーマンス低下になります。(私の最上位のPCでも、Win2Kで人々がそれをどのように処理できるのか疑問に思います)
レイヤードウィンドウに関するMicrosoftの論文を読むと、次のように書かれています。UpdateLayeredWindowは常にウィンドウ全体を更新します。ウィンドウの一部を更新するには、従来のWM_PAINTを使用し、SetLayeredWindowAttributesを使用してブレンド値を設定します。
上記が理解できません。WM_PAINTは、レイヤードウィンドウビットマップにアクセスし、その一部のみをウィンドウに再描画するためにどのように想定されていますか?私が理解したところによると、階層化されたウィンドウは単にWM_PAINTメッセージを無効にし、ユーザーが自分でウィンドウを描画することを期待しています。完了したカスタム描画にWM_PAINTをバインドする方法は明らかにありません。
私は非常に明白な何かを逃していますか?
c# - ポップアップをレイヤードウィンドウとして機能させることは可能ですか?
PopUp を LayeredWindow にできるかどうか疑問に思っています。
Encoder 4 を使用していますが、プログラムがレイヤード ウィンドウをキャプチャしないようにするプロパティがあります。
ツールチップにフィードを表示するコードは次のとおりです
Wpf :
この問題は Encoder 4 で、プレビュー ウィンドウの HandleRef のみを受け入れます。
これは私が Encoder で行うことです: MediaSource は LiveDeviceSource です
私が欲しいのは、ウェブカメラのプレビューを表示するが画面に記録されていないツールチップを持つことです。
ポップアップを使用しない場合、フィードは表示されません。Altought Encoder はそれが LayeredWindow であることを理解し、それを記録しません。
ポップアップを使用すると、フィードが表示されますが、記録されています。どういうわけか、ツールチップに表示されていても、layeredWindow ではなくなりました。
いくつかの助けは大いに感謝され、報われるでしょう =)
c++ - C++ レイヤード ウィンドウと WM_MOUSEMOVE
C++ と WinAPI で透明なスクリーン セーバーを作成しようとしています。
WM_MOUSMOVE
今のところ Windows XP では問題なく動作しますが、WES7 では次の問題があります: 画面を透明にすると、メッセージを受信できません。
それ以外の場合はマウスメッセージを受信しないため、0より大きくなければならない情報を既に取得していbyAlpha
ますが、マウスクリックだけでなくキーボードメッセージも受信します。
これで私を助けてくれることを願っています。
user-interface - Win32 LayeredWindow が悪い視覚効果を与える
パネルのティアオフやドッキングなどのスマート機能をすべて備えた UI システムを開発しています。現在、私のタスクは、ティアオフまたはドッキング可能なパネルが着陸する位置を示す画面上のオーバーレイを作成することです。ビジュアルスタジオが持っているものとほとんど同じです。そのために、必要なときに表示されるカスタムのレイヤード ウィンドウ クラスを使用しています。その後、必要な効果を達成するために掘り始めました。以前は標準の GDI 関数を使用していましたが、基本的には問題ありません。しかし今回は、ドキュメントのアドバイスに従って、タスクに UpdateLayeredWindow を使用し、GDI 関数で描画する代わりにビットマップから 32 ビット イメージをロードしました。ここでは、アルファチャンネルが 222、RGB が 255 0 0 の 128x128 ピクセル幅の bmp があります。
初期化と描画に使用するメソッドを次に示します。
ウィンドウ スタイルには、このエクストラがあります WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOPMOST
そして、ここに私が得るものがあります。ご覧のとおり、ブレンドはピクセルごとのアルファを考慮に入れていますが、ブレンド作業はうまくいきません。それを調整する方法はありますか?