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:
- Beskär indata till den angivna egenskapen InputRect.
- Ö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.
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.
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 |