Dela via


Atlaseffekt

Du kan använda den här effekten för att mata ut en del av en bild men behålla regionen utanför delen för användning i efterföljande åtgärder.

CLSID för den här effekten är CLSID_D2D1Atlas.

Atlaseffekten är användbar om du vill läsa in en stor bild som består av många mindre bilder, till exempel olika bildrutor i en sprite.

Så här skapar du resultatet:

  1. Beskär indata till den angivna egenskapen InputRect.
  2. Översätter resultatets ursprung till (0,0).

Not

Egenskapen InputPaddingRect bör bara vara större om och endast om bildpunkterna mellan de två rektanglarna är transparenta svarta på indata. Detta kan leda till att Direct2D kör grafen mer optimalt.

Här är ett exempel på effekten. Den här bilden är liten och enkel i illustrationssyfte.

indatabild.

Föregående bild är indata för effekten. Koden här skapar en atlaseffekt, anger indata, anger indatarektangeln och ritar sedan utdata.

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

Föregående kod väljer en rektangel som ligger runt den andra triangeln. Utfyllnaden runt den ignoreras. Här är den resulterande bilden.

utdatabild.

Not

Det här är en situation där du kan välja att ange en InputPaddingRect- eftersom utfyllnaden är transparent svart. Rektangeln skulle vara D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);.

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
Den del av bilden som skickas till nästa effekt.
Typen är D2D1_VECTOR_4F.
Standardvärdet är (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
Den maximala storlek som samplas för utdatarektangeln.
Typen är D2D1_VECTOR_4F.
Standardvärdet är (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Krav

Krav Värde
Lägsta klient som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Lägsta server som stöds Windows 8 och Platform Update för Windows 7 [skrivbordsappar | Windows Store-appar]
Rubrik d2d1effects.h
Bibliotek d2d1.lib, dxguid.lib

ID2D1Effect