共用方式為


Atlas 效果

您可以使用此效果來輸出影像的一部分,但保留部分外部的區域以供後續作業使用。

此效果的 CLSID CLSID_D2D1Atlas。

如果您想要載入由許多較小影像組成的大型影像,例如 Sprite 的各種畫面格,則 atlas 效果很有用。

若要建立輸出效果:

  1. 將輸入裁剪至指定的 InputRect 屬性。
  2. 將結果的來源轉譯為 (0,0) 。

注意

只有在兩個矩形之間的圖元在輸入上是透明黑色時, InputPaddingRect 屬性才應該較大。 這可能會導致 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());

上述程式碼會選取位於第二個三角形周圍的矩形。 會忽略其周圍的邊框間距。 以下是產生的影像。

輸出影像。

注意

這是您可能會選擇指定 InputPaddingRect 的情況,因為邊框間距是透明黑色。 矩形會是 D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);

效果屬性

顯示名稱和索引列舉 描述
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