Dela via


Transformeringseffekt för 2D-affin

2D-affintransformeringseffekten tillämpar en rumslig transformering på en bild baserat på en 3X2-matris med hjälp av Direct2D-matrisen transformera och något av sex interpolationslägen. Du kan använda den här effekten för att rotera, skala, snedställa eller översätta en bild. Eller så kan du kombinera dessa åtgärder. Affinöverföringar bevarar parallella linjer och förhållandet mellan tre punkter i en bild.

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

Exempelbild

Före
bilden före effekten.
Efter
bilden efter transformen.
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInput(0, bitmap);

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f,   0.1f, 0.9f,   8.0f, 45.0f);

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();

Den här effekten utför den här matrisåtgärden:

affinmatrisåtgärd

Även om indatamatrisen definieras som en 3x2-matris, är den sista kolumnen vadderad med 0, 0 och 1 för att skapa en kvadratmatris. Detta möjliggör matris multiplikation, så att transformeringar kan sammanfogas till en enda matris.

Effektegenskaper

Visningsnamn och indexuppräkning Beskrivning
InterpolationMode
D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE
Interpoleringsläget som används för att skala bilden. Det finns 6 skalningslägen som varierar i kvalitet och hastighet.
Typen är D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE.
Standardvärdet är D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE
Det läge som används för att beräkna bildens kantlinje, mjuk eller hård. Mer information finns i kantlinjelägen.
Typen är D2D1_BORDER_MODE.
Standardvärdet är D2D1_BORDER_MODE_SOFT.
TransformMatrix
D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX
3x2-matrisen för att transformera avbildningen med direct2D-matrisen transformera.
Typen är D2D1_MATRIX_3X2_F.
Standardvärdet är Matrix3x2F::Identity().
Skärpa
D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS
I kubikinterpolationsläget av hög kvalitet är skalningsfiltrets skärpanivå mellan 0 och 1. Värdena är enhetslösa. Du kan använda skärpa för att justera kvaliteten på en bild när du skalar bilden.
Skärpafaktorn påverkar kärnans form. Ju högre skärpafaktor, desto mindre kernel.
Obs! Den här egenskapen påverkar endast kubikinterpoleringsläget av hög kvalitet.
Typen är FLOAT.
Standardvärdet är 0,0f.

Kantlinjelägen

Namn Beskrivning
D2D1_BORDER_MODE_SOFT Effekten fyller bilden med transparenta svarta bildpunkter när den interpoleras, vilket resulterar i en mjuk kant.
D2D1_BORDER_MODE_HARD Effekten klämmer utdata till indatabildens storlek.

Interpoleringslägen

Uppräkning Beskrivning
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Exempel på den närmaste enskilda punkten och använder den. I det här läget används mindre bearbetningstid, men den lägsta kvalitetsbilden matas ut.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR Använder ett fyrpunktsexempel och linjär interpolation. Det här läget använder mer bearbetningstid än närmaste grannläge, men ger en bild av högre kvalitet.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC Använder en 16-exempelkubik kernel för interpolering. Det här läget använder mest bearbetningstid, men ger en bild av högre kvalitet.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Använder 4 linjära exempel inom en enda pixel för bra kantutjämning. Det här läget är bra för att skala ned med små mängder på bilder med några bildpunkter.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Använder anisotropisk filtrering för att prova ett mönster enligt bitmappens transformerade form.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC Använder en kubikkärn med variabel storlek av hög kvalitet för att utföra en förskala avbildningen om nedskalning ingår i transformeringsmatrisen. Använder sedan kubikinterpoleringsläget för de slutliga utdata.

Not

Om du inte väljer ett läge kommer effekten som standard att D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.

Not

Anisotropt läge genererar mipmaps vid skalning, men om du anger egenskapen Cached till true för de effekter som indata till den här effekten, genereras inte mipmaps varje gång för tillräckligt små bilder.

Utdatabitmapp

Storleken på utdatabitmappen beror på transformeringsmatrisen som tillämpas på bilden.

Effekten utför transformeringsåtgärden och tillämpar sedan en avgränsningsruta runt resultatet. Utdatabitmappen är storleken på avgränsningsrutan.

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