次の方法で共有


Atlas 効果

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

この効果の CLSID はCLSID_D2D1Atlas。

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

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

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

手記

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

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

入力イメージ します。

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

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 番目の三角形の周囲にある四角形を選択します。 周囲のパディングは無視されます。 結果の画像を次に示します。

出力イメージ 。

手記

これは、パディングが透明な黒であるため、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 ストア アプリ]
ヘッダ d2d1effects.h
図書館 d2d1.lib、dxguid.lib

ID2D1Effect