問題タブ [z-order]

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.

0 投票する
6 に答える
33995 参照

opengl - openGL では、どのように項目を前面に描画することができますか?

デフォルトでは、オブジェクトは前後に描かれているようです。2-D UI オブジェクトを描画していて、それを前後に作成したいと考えています。たとえば、最初に白い正方形を作成し、その上に少し小さい黒い正方形を作成して、白い境界線を持つ黒いペインを作成できます。 この投稿ではいくつかの議論があり、この順序を「Painter's Algorithm」として説明しましたが、最終的に彼らが示した例では、目的の効果を得るためにオブジェクトを逆の順序で単純にレンダリングしました。私は後ろから前に(最初のオブジェクトは後ろに、後続のオブジェクトは上に描画されます)レンダリングは何らかの変換(gOrtho?)によって達成できますか?

また、GLUT などのラッパー ライブラリを使用したソリューションには興味がないことも述べておきます。

また、Cocoa NSOpenGLView を使用する Mac でのデフォルトの動作は、Windows ではこの動作が得られないのに対し、後方に描画されるように見えることもわかりました。私が使用しているWindowsのセットアップコードは次のとおりです。

0 投票する
3 に答える
2058 参照

c# - 別のアプリのウィンドウを一番上にした後、フォーカスが失われました

別のアプリのウィンドウを一番上にして、自分のアプリをクリックすると他のアプリのダイアログが表示されるようにします。私が抱えている問題は、電話をかけた後、アプリにフォーカスが戻らないことです。他のアプリにさらに多くのウィンドウがある場合、そのうちの1つにフォーカスがあり、それ以外の場合、ウィンドウ(タスクバーのみを見る)はフォーカスを取得しません。問題の調査はどこから始めればよいですか?

他のアプリを最上位にするための私のコードは次のとおりです。

定数として

0 投票する
1 に答える
1499 参照

mfc - カスタム透明コントロールの作成

ピクセルごとの alphablend を使用してビットマップを表示するカスタム コントロールを作成しようとしています (他の質問で既に知っている人もいます)。

現在、リソース エディターでカスタム コントロールを使用しており、それを CWnd から派生したクラスにアタッチしています。カスタム クラスを登録するときに、WNDCLASS 構造体の hbrBackground を NULL_BRUSH に設定して、コントロールの透過性を実現します。

コントロールの OnPaint では、AlphaBlend を使用して、ピクセルごとのアルファ ブレンド ビットマップをペイントします。

これは非常にうまく機能しますが、次の2つの問題があります。

  • マウスがコントロールの上にあるときに表示されるビットマップを変更したい。コントロールは透明であるため、一方のビットマップが他方のビットマップと重なっていない領域は消去されません。画像が変更されたときに背景を消去するにはどうすればよいですか?

  • 2 番目の問題は、2 つの重複するコントロールに関連しています。私のコントロールは、グラデーションを持つ他のコントロール上に描画されます (実際には他のコントロール内にあります)。問題は、自分のコントロールを z オーダーの前に置くと、他のコントロールが自分のコントロールと重なり、自分のコントロールが表示されないことです。Z オーダーの前に他のコントロールを配置すると、コントロールでマウス メッセージを取得できません。

たぶん、私は何か間違ったことをしている、または自分のコントロールを実装しようとしている方法が間違っています。どんな種類の助けもいただければ幸いです。

ありがとう、

ハビエル

0 投票する
3 に答える
390 参照

html - コンテンツの上にフラッシュを表示

チュートリアルのあるページ(http://www.poromenos.org/tutorials/bittorrent/download)がありますが、サイトのレイアウトがフラッシュプレーヤーを覆い隠しており、幅が広すぎます。zオーダー(または他の何か、ライトボックス-y)を介してコンテンツの上にフラッシュを表示する方法はありますか?

0 投票する
4 に答える
49924 参照

wpf - wpfでアイテムを前面に出すにはどうすればよいですか?

私は単純に2つのグリッドを重ね合わせています。世界のある状態を考えると、グリッド A を一番上に置き、世界の別の状態を考えると、グリッド B を一番上にしたいと思います。昔は grid.BringToFront() を呼び出すだけでしたが、それはもう存在しません。それを実現する方法がわかりません。

私が把握できる最善の方法は、この機能を可能にするために独自のカスタム クラスを作成する必要があることですが、これは非常に単純だったものにとってはやり過ぎのように思えます。

0 投票する
1 に答える
4692 参照

wpf - ウィンドウが実際に WPF で表示されているかどうかを判断する最良の方法は何ですか?

システム トレイ アプリの通知アイコンのクリックに基づいて、小さなウィンドウの表示を切り替えようとしています。これは実装するのに十分簡単ですが、小さなウィンドウが表示され、別のアプリケーションがフォーカスを取得してその前に移動すると (z オーダー)、小さなウィンドウが非表示になっていると仮定してトグルが必要です。まだ見えるように設定されています。そうしないと、アイコンをクリックすると、ウィンドウが別のウィンドウの背後に隠れていても、ウィンドウの表示が非表示に設定されます。activate メソッドと deactive メソッドをキャッチ/オーバーライドして追跡しようとしましたが、通知アイコンをクリックすると、常に deactive イベントが最初に発生します。フォーカス/失われたフォーカスを使用した同様のアプローチでは、アクティブに使用されている別のアプリケーション ウィンドウの背後に隠れていても、ウィンドウがまだフォーカスを持っていると考えているように見えるため、動作しません。結局、次のようにネイティブ コードと WindowFromPoint メソッドに頼らなければなりませんでした。

これは、問題のウィンドウの中心の座標で返されたウィンドウがそのウィンドウと一致するかどうかを確認します。つまり、問題のウィンドウの中心が表示されます。

これは少しハックに思えますが、同じ結果を達成するためのより良い方法はありますか?

0 投票する
2 に答える
8654 参照

wpf - コードビハインドでキャンバスに追加されたユーザーコントロールを前面に表示するにはどうすればよいですか

コードビハインドでキャンバスに追加および削除される一連のユーザーコントロールがあります。特定のものが他のものよりも進んでいることを確認する必要があります。キャンバスに追加されたユーザー コントロールの順序である VB6 の ZOrder をどのように設定しますか?

0 投票する
2 に答える
2246 参照

.net - TopMost と Invoke を含む Z オーダーの問題

Form.ShowDialog() でダイアログを表示しています。フォームは TopMost に設定されています。一部の画像処理計算は、バックグラウンドで非同期に実行されます。それらの結果は、Invoke によってメイン フォームにレンダリングされます。ここまでは順調ですね。奇妙なことは、時々モーダル ダイアログがメイン フォームの後ろに移動することです。ダイアログを構築するメッセージが Invoke によって何らかの形で「邪魔された」場合に発生すると思います。

この問題を解決する方法はありますか?

0 投票する
3 に答える
14308 参照

c# - c#wpfオーバーラップコントロールがマウスイベントを受信しない

キャンバスコントロールを作成しています。このルートキャンバスには、いくつかの重複する子があります(キャンバスも同様)。これは、各子が独自の描画を処理できるようにするために行われ、その後、子の任意の組み合わせを使用して最終結果を作成し、目的の動作を得ることができます。

これは、レンダリングに関する限り、非常にうまく機能しています。ただし、これはマウスイベントではうまく機能しません。マウスイベントの動作は次のとおりです(例としてpreviewmousemoveを使用)。

1-ルートキャンバスがマウスの下にある場合は、イベントを発生させます2-すべての子をチェックし、1つがマウスの下にある場合は、イベントを発生させて停止します

そのため、私が追加した最初の子だけがマウス移動イベントを受け取ります。イベントは重複しているため、すべての子に伝播されるわけではありません。

これを克服するために、次のことを試みました。1-ルートキャンバスでマウスイベントをオーバーライドする2-すべてのイベントについて、VisualTreeHelper.HitTestを使用してイベントを処理するすべての子を検索する3-有効なヒットテスト結果を返したすべての子について(すなわち:マウスの下で、イベントを処理する用意があります(IsHitTestVisible == true))、???

これは私が立ち往生している場所です。どういうわけか、マウスイベントをすべての子に送信し、イベントの通常のフローを停止して、最初の子が2回受信しないようにする必要があります(イベントでhandled = trueを使用)。

同じイベントが子に渡された状態でRaiseEventを使用すると、動作しているように見えますが、どういうわけか、親(ルートキャンバス)でもイベントが発生します。これを回避するには、イベントのコピーを作成し、ソースを強制的に設定する必要がありましたが、それは解決策というよりはハックのようです。私がやろうとしていることをする適切な方法はありますか?コード例は次のとおりです。

0 投票する
1 に答える
1216 参照

c# - どのコントロールが前にあるかを実行時にどのように判断できますか?

多数のコンテナ コントロール (a Panel) がForms読み込まれています。ユーザーの操作に基づいて、.BringToFront()特定のフォームを作成します。ただし、プログラムの他の部分では、現在どのフォームが前面にあるかを把握したいと思います。(つまり、.BringToFront()メソッドが最後に呼び出されたフォームを特定します。)

どのコントロールが前にあるかを判断するための最良の方法は何ですか?