次の方法で共有


Atlas 効果

この効果を使用すると、イメージの一部を出力できますが、後続の操作で使用するために領域の外側に領域を保持できます。

この効果の CLSID はCLSID_D2D1Atlas。

atlas 効果は、スプライトのさまざまなフレームなど、多数の小さな画像で構成される大きな画像を読み込む場合に便利です。

出力を作成するには、次の手順を実行します。

  1. 指定した InputRect プロパティに入力をトリミングします。
  2. 結果の原点を (0,0) に変換します。

Note

InputPaddingRect プロパティは、2 つの四角形間のピクセルが入力の透明な黒の場合にのみ、大きくする必要があります。 これにより、Direct2D でグラフがより最適に実行される可能性があります。

効果の例を次に示します。 この画像は、図を示す小さくシンプルです。

入力イメージ。

上記の画像は、効果への入力です。 ここでのコードは、アトラス効果を作成し、入力を設定し、入力四角形を設定して、出力を描画します。

ComPtr<ID2D1Effect> atlasEffect;

// Create the Atlas Effect.
DX::ThrowIfFailed(m_d2dContext->CreateEffect(CLSID_D2D1Atlas, &atlasEffect));

// Set the input.
atlasEffect->SetInputEffect(0, inputImage.Get());

// The images here are 150 x 150 pixels.
float size = 150.0f;

// Compensate for the padding between images.
float padding = 10.0f;

// The input rectangle.  150 x 150 pixels with 10 pixel padding
D2D1_Vector_4F inputRect = D2D1::Vector4F(size + (padding * 2), padding, size, size);

DX::ThrowIfFailed(atlasEffect->SetValue(D2D1_ATLAS_PROP_INPUT_RECT, inputRect));

// Draw the image
m_d2dContext->DrawImage(atlasEffect.Get());

上記のコードは、2 番目の三角形の周囲にある四角形を選択します。 その周囲のパディングは無視されます。 結果の画像を次に示します。

出力イメージ。

Note

これは、パディングが透明な黒であるため、 InputPaddingRect を指定することを選択できる状況です。 四角形は になります D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);

Effect プロパティ

表示名とインデックス列挙 説明
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
イメージの部分が次の効果に渡されます。
型がD2D1_VECTOR_4F。
既定値は (-FLT_MAX、-FLT_MAX、FLT_MAX、FLT_MAX) です。
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
出力四角形にサンプリングされる最大サイズ。
型がD2D1_VECTOR_4F。
既定値は (-FLT_MAX、-FLT_MAX、FLT_MAX、FLT_MAX) です。

必要条件

要件
サポートされている最小のクライアント Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
サポートされている最小のサーバー Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
Header d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect