Udostępnij za pośrednictwem


Efekt atlasu

Możesz użyć tego efektu, aby wyświetlić część obrazu, ale zachować region poza częścią do użycia w kolejnych operacjach.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1Atlas.

Efekt atlasu jest przydatny, jeśli chcesz załadować duży obraz składający się z wielu mniejszych obrazów, takich jak różne ramki sprite.

Aby utworzyć dane wyjściowe, efekt:

  1. Przycina dane wejściowe do danej właściwości InputRect.
  2. Tłumaczy początek wyniku na (0,0).

Nuta

Właściwość InputPaddingRect powinna być większa tylko wtedy, gdy i tylko wtedy, gdy piksele między dwoma prostokątami są przezroczyste czarne na wejściu. Może to spowodować, że funkcja Direct2D wykonuje graf bardziej optymalnie.

Oto przykład efektu. Ten obraz jest mały i prosty do celów ilustracyjnych.

obraz wejściowy.

Powyższy obraz jest wejściem do efektu. W tym miejscu kod tworzy efekt atlasu, ustawia dane wejściowe, ustawia prostokąt wejściowy, a następnie rysuje dane wyjściowe.

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

Powyższy kod wybiera prostokąt, który znajduje się wokół drugiego trójkąta. Wypełnienie wokół niego jest ignorowane. Oto wynikowy obraz.

obraz wyjściowy.

Nuta

Jest to sytuacja, w której można określić InputPaddingRect, ponieważ wypełnienie jest przezroczyste czarne. Prostokąt będzie D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);.

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
Część obrazu przekazana do następnego efektu.
Typ to D2D1_VECTOR_4F.
Wartość domyślna to (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
Maksymalny rozmiar próbkowany dla prostokąta danych wyjściowych.
Typ to D2D1_VECTOR_4F.
Wartość domyślna to (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Minimalny obsługiwany serwer Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Nagłówek d2d1effects.h
Biblioteka d2d1.lib, dxguid.lib

ID2D1Effect