Atlas-Effekt

Sie können diesen Effekt verwenden, um einen Teil eines Images auszugeben, aber die Region außerhalb des Teils zur Verwendung in nachfolgenden Vorgängen beizubehalten.

Die CLSID für diesen Effekt ist CLSID_D2D1Atlas.

Der Atlaseffekt ist nützlich, wenn Sie ein großes Bild laden möchten, das aus vielen kleineren Bildern besteht, z. B. verschiedene Frames eines Sprites.

So erstellen Sie die Ausgabe des Effekts:

  1. Schneidet die Eingabe auf die angegebene InputRect-Eigenschaft ab.
  2. Übersetzt den Ursprung des Ergebnisses in (0,0).

Hinweis

Die InputPaddingRect-Eigenschaft sollte nur dann größer sein, wenn die Pixel zwischen den beiden Rechtecken in der Eingabe transparent schwarz sind. Dies kann dazu führen, dass Direct2D den Graphen optimaler ausführt.

Hier sehen Sie ein Beispiel für den Effekt. Dieses Bild ist zu Veranschaulichungszwecken klein und einfach.

Eingabebild.

Die obige Abbildung ist die Eingabe für den Effekt. Der Code hier erstellt einen Atlaseffekt, legt die Eingabe fest, legt das Eingaberechteck fest und zeichnet dann die Ausgabe.

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

Der vorangehende Code wählt ein Rechteck aus, das sich um das zweite Dreieck befindet. Der Abstand um ihn herum wird ignoriert. Hier sehen Sie das resultierende Bild.

Ausgabebild.

Hinweis

In dieser Situation können Sie einen InputPaddingRect-Wert angeben, da der Abstand transparent schwarz ist. Das Rechteck wäre D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);.

Effekteigenschaften

Anzeigename und Indexenumeration BESCHREIBUNG
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
Der Teil des Bilds, der an den nächsten Effekt übergeben wird.
Typ ist D2D1_VECTOR_4F.
Der Standardwert ist (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
Die maximale Stichprobengröße für das Ausgaberechteck.
Typ ist D2D1_VECTOR_4F.
Der Standardwert ist (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Unterstützte Mindestversion (Server) Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Header d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect