Freigeben über


Atlaseffekt

Sie können diesen Effekt verwenden, um einen Teil eines Bilds auszugeben, aber den Bereich außerhalb des Teils für die 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 an die angegebene InputRect-Eigenschaft ab.
  2. Übersetzt den Ursprung des Ergebnisses in (0,0).

Anmerkung

Die InputPaddingRect--Eigenschaft sollte nur dann größer sein, wenn die Pixel zwischen den beiden Rechtecke auf der Eingabe transparent schwarz sind. Dies kann dazu führen, dass direct2D das Diagramm optimal ausführt.

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

Eingabebild.

Das vorherige Bild 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 sie herum wird ignoriert. Hier sehen Sie das resultierende Bild.

Ausgabebild.

Anmerkung

Dies ist eine Situation, in der Sie eine InputPaddingRect- angeben können, 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 wurde.
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 Größe, die für das Ausgaberechteck stichprobeniert wurde.
Typ ist D2D1_VECTOR_4F.
Der Standardwert ist (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Mindestens unterstützter Server Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps]
Kopfball d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect-