0

通常のウィンドウに描画してHwndRengerTargetいますが、Direct2D とは関係のない他のウィンドウが重なっています。

問題は、 に描画すると、これらのウィンドウが塗りつぶされることHwndRengerTargetです。

これらのウィンドウが正しく表示されたままになるように、Direct2D に特定の領域に触れないようにHwndRengerTarget(つまり、既に画面上にあるピクセルに触れないように) 指示したいと思います。

それは可能ですか?

通常どおり描画RedrawWindowしてからウィンドウを呼び出すと、ちらつきが多くなります。

ありがとう。

4

3 に答える 3

3

レンダリングを特定の領域に手動で制限したい場合は、レイヤー (ID2D1Layerオブジェクト) を使用できます。詳細はこちらレイヤーの概要

可視領域が四角形の場合は、メソッド PushAxisAlignedClipおよびを介して軸に沿ったクリップを使用する方が簡単な場合がありPopAxisAlignedClipます。 ID2D1RenderTarget::PushAxisAlignedClip

描画を特定の形状に制限するもう 1 つの方法は、それをビットマップにレンダリングし、メソッド内のビットマップ ブラシを介してこのビットマップを使用することFillGeomtryです。 ID2D1RenderTarget::FillGeometry

于 2013-02-13T14:35:33.220 に答える
2

Direct2D が z-index の一番下になるようにウィンドウ (HWND) を配置しないのはなぜですか? 親の最初の子である必要があります。その後、クリッピングは自動的に行われます。WS_CLIPSIBLINGS ウィンドウ スタイルが必要な場合があります。

于 2012-09-08T16:20:07.577 に答える
0

私も同じ問題を抱えていました。

D2D 子 HWND に対して CreateWindowEx LAST を呼び出すことで修正されました。したがって、他のすべての子ウィンドウが作成された後。

于 2013-07-25T16:10:09.520 に答える