2010-11-29 7 views
0

アニメーションを使用して、カスタムショーダイアログのポップアップ(いくつかのTextBlockとButtonでボーダーコントロール)を表示しています。 WinFormHostを使用してアニメーションを実行すると、ボーダーコントロールなどがWinFormHostの背後に表示されます。それについてラウンドはありますか?WindowsFormHostコントロールを上に置くことを許可していませんか?

答えて

3

WPFとWindowsフォームのコンテンツが同じウィンドウを共有するようにするには、これを回避する方法はありません。

WPFはDirect3D経由でレンダリングしますが、Windowsフォームは最終的には古いGDI32レンダリングメカニズムに基づいているGDI +を使用します。 Windows自体は、これら2つの異なるテクノロジを持つウィンドウの同じ領域にレンダリングする方法を提供しません.Windowsで所有され、Direct3DによってレンダリングされたHWND(WPFで使用される)と、Windowsによって所有されレンダリングされる別のHWNDフォーム。これらのHWNDは、それらの間にあるウィンドウ内のスペースを彫り込み、重なり合うことはできません。あなたがWPFを重ねたいとWindowsがコンテンツをフォーム場合

は、それを行うための唯一の方法は、個別のトップレベルウィンドウでそれらを置くことです - Windowsのは、デスクトップレベルでのWin32とDirect3Dのコンテンツを重複しサポートしています。ピクセル単位の透明度を使用して、非長方形のウィンドウを作成できます(WPFまたはWindowsフォームのいずれか)。したがって、WPFアプリケーションのすべてのウィンドウ枠をオフにして背景を透明にすることができます。透明化を有効にしている場合は、Windowsフォームウィンドウと同じ場所にそのウィンドウを配置できますWPFコンテンツをWindowsフォームコンテンツの上に配置できるようになりました。

言うまでもなく、これは面倒なことです。しかし残念ながら、Windows Formsコンテンツの上にWPFコンテンツが本当に必要な場合は、WPFコンテンツを別のウィンドウに配置する必要があります。

関連する問題