Share via


ID2D1RenderTarget::PushAxisAlignedClip メソッド

後続のすべての描画操作がクリップされる四角形を指定します。

構文

void PushAxisAlignedClip(
  [ref]  const D2D1_RECT_F &clipRect,
         D2D1_ANTIALIAS_MODE antialiasMode
);

パラメーター

  • clipRect
    D2D1_RECT_F クリッピング領域のサイズと位置 (デバイス非依存のピクセル単位)。
  • antialiasMode
    D2D1_ANTIALIAS_MODE サブピクセル境界を使用するクリップ四角形の端を描画したり、クリップとシーン コンテンツをブレンドしたりする際に使用するアンチエイリアシング モード。ブレンド処理は、PopAxisAlignedClip メソッドが呼び出されるときに 1 回実行され、レイヤー内の各プリミティブには適用されません。

戻り値

This は値を返しません。

解説

clipRect は、レンダー ターゲットで設定された現在のワールド変換によって変換されます。渡される clipRect に変換が適用されると、clipRect の軸平行境界ボックスが計算されます。効率を向上するために、コンテンツは、渡される元の clipRect ではなく、この軸平行境界ボックスにクリップされます。

次の図は、レンダー ターゲットへの回転変換の適用方法、結果の clipRect、および計算された軸平行境界ボックスを示しています。

  1. 次の四角形は、画面のピクセルに合わせて調整されたレンダー ターゲットであるとします。元のレンダー ターゲット
  2. このレンダー ターゲットに回転変換を適用します。次の図では、黒の四角形は元のレンダー ターゲットを表し、赤の破線の四角形は変換後のレンダー ターゲットを表しています。変換後のレンダー ターゲット
  3. PushAxisAlignedClip を呼び出すと、回転変換が clipRect に適用されます。次の図では、青の四角形は変換後の clipRect を表しています。変換後のクリップ四角形
  4. 軸平行境界ボックスが計算されます。緑の波線の四角形は境界ボックスを表しています。すべてのコンテンツはこの軸平行境界ボックスにクリップされます。軸平行境界ボックス

  レンダリング操作に失敗した場合または PopAxisAlignedClip が呼び出されない場合は、クリップ四角形が原因でレンダー ターゲットでアーティファクトが発生することがあります。PopAxisAlignedClip は、クリッピング領域の境界線を修正するように設計されている描画操作と考えることができます。これを呼び出さないと、クリップされた領域の境界線はアンチエイリアシングされないか、または他の方法でも修正されない場合があります。

PushAxisAlignedClipPopAxisAlignedClip は対応している必要があります。対応していない場合は、エラー状態が設定されます。レンダー ターゲットで引き続き新しいコマンドを受け取れるようにするには、Flush を呼び出してエラーをクリアします。

PushAxisAlignedClipPopAxisAlignedClip のペアは、PushLayer と PopLayer を囲むように配置することも、その内部に配置することも可能ですが、部分的に重ねることはできません。たとえば、PushAxisAlignedClipPushLayerPopLayerPopAxisAlignedClip というシーケンスは有効ですが、PushAxisAlignedClipPushLayerPopAxisAlignedClipPopLayer というシーケンスは無効です。

このメソッドは失敗した場合でも、エラー コードが返されません。描画操作 (PushAxisAlignedClip など) が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドによって返された結果を確認します。

要件

クライアントの最小要件

Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム

サーバーの最小要件

Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム

ヘッダー

D2d1.h

ライブラリ

D2d1.lib

DLL

D2d1.dll

参照

ID2D1RenderTarget