共用方式為


Atlas 效果

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

這個效果的 CLSID 是CLSID_D2D1Atlas。

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

若要建立輸出效果:

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

注意

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

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

輸出影像。

注意

這是您可以選擇指定 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