Condividi tramite


Effetto Atlas

È possibile usare questo effetto per restituire una parte di un'immagine, ma conservare l'area esterna alla parte per l'uso nelle operazioni successive.

ClSID per questo effetto è CLSID_D2D1Atlas.

L'effetto atlas è utile se si vuole caricare un'immagine di grandi dimensioni costituita da molte immagini più piccole, ad esempio vari fotogrammi di una sprite.

Per creare l'output l'effetto:

  1. Ritaglia l'input alla proprietà InputRect specificata.
  2. Converte l'origine del risultato in (0,0).

Nota

La proprietà InputPaddingRect deve essere maggiore solo se e solo se i pixel tra i due rettangoli sono trasparenti sull'input. Ciò può comportare l'esecuzione del grafico direct2D in modo più ottimale.

Ecco un esempio dell'effetto. Questa immagine è piccola e semplice per scopi di illustrazione.

immagine di input.

L'immagine precedente è l'input per l'effetto. Il codice qui crea un effetto atlas, imposta l'input, imposta il rettangolo di input e quindi disegna l'output.

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());

Il codice precedente seleziona un rettangolo intorno al secondo triangolo. La spaziatura interna intorno viene ignorata. Ecco l'immagine risultante.

immagine di output.

Nota

Si tratta di una situazione in cui è possibile scegliere di specificare un InputPaddingRect perché la riempimento è trasparente nero. Il rettangolo sarebbe D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);.

Proprietà dell'effetto

Enumerazione nome visualizzato e indice Descrizione
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
Parte dell'immagine passata all'effetto successivo.
Il tipo è D2D1_VECTOR_4F.
Il valore predefinito è (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
Dimensioni massime campionate per il rettangolo di output.
Il tipo è D2D1_VECTOR_4F.
Il valore predefinito è (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Server minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Intestazione d2d1effects.h
Libreria d2d1.lib, dxguid.lib

ID2D1Effect