Atlas 效果
您可以使用此效果來輸出影像的一部分,但保留部分外部的區域以供後續作業使用。
此效果的 CLSID CLSID_D2D1Atlas。
如果您想要載入由許多較小影像組成的大型影像,例如 Sprite 的各種畫面格,則 atlas 效果很有用。
若要建立輸出效果:
- 將輸入裁剪至指定的 InputRect 屬性。
- 將結果的來源轉譯為 (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 |