Diskret överföringseffekt
Använd den diskreta överföringseffekten för att mappa färgintensiteterna i en bild med hjälp av en stegöverföringsfunktion som skapats från en lista med värden som du anger.
CLSID för den här effekten är CLSID_D2D1DiscreteTransfer.
- Exempelbild
- egenskaper för effekt
- Krav
- Relaterade ämnen
Exempelbild
Bilden här visar indata och utdata för den diskreta överföringseffekten.
Före |
---|
![]() |
Efter |
![]() |
ComPtr<ID2D1Effect> discreteTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1DiscreteTransfer, &discreteTransferEffect);
discreteTransferEffect->SetInput(0, bitmap);
float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(discreteTransferEffect.Get());
m_d2dContext->EndDraw();
Överföringsfunktionen baseras på listan över indata: V=(V0,V1,V2,V3,V? ,VN) där N är antalet element - 1.
Indatapixelintensiteten representeras som C. Utdatapixelintensiteten, C beräknas med ekvationen:
För ett värde C väljer du ett värde k, så att:
Utdata C kan beräknas med hjälp av ekvationen: C ' = V?
Den här effekten fungerar på raka och förmultiplierade alfabilder. Effekten matar ut förmultiplied alfa bitmappar.
Så här ser grafen med diskret överföringsfunktion ut om indata är [0.25, 0.5, 0.75, 1.0]
.
Effektegenskaper
Not
Värdena för alla kanaler i de diskreta överföringsegenskaperna är enhetslösa och har minst 0,0 och högst 1,0.
Visningsnamn och indexuppräkning | Typ- och standardvärde | Beskrivning |
---|---|---|
RedTable D2D1_DISCRETETRANSFER_PROP_RED_TABLE |
FLOAT[] {0.0f, 1.0f} |
Listan med värden som används för att definiera överföringsfunktionen för den röda kanalen. |
RedDisable D2D1_DISCRETETRANSFER_PROP_RED_DISABLE |
BOOL FALSK |
Om du ställer in detta på TRUE tillämpas inte överföringsfunktionen på den röda kanalen. Om du ställer in detta på FALSE tillämpas funktionen RedDiscreteTransfer på den röda kanalen. |
GreenTable D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE |
FLOAT[] {0.0f, 1.0f} |
Listan med värden som definierar överföringsfunktionen för den gröna kanalen. |
GreenDisable D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE |
BOOL FALSK |
Om du ställer in värdet TRUE tillämpas inte överföringsfunktionen på den gröna kanalen. Om du ställer in detta på FALSE tillämpar effekten funktionen GreenDiscreteTransfer på den gröna kanalen. |
BlueTable D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE |
FLOAT[] {0.0f, 1.0f} |
Listan med värden som definierar överföringsfunktionen för den blå kanalen. |
BlueDisable D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE |
BOOL FALSK |
Om du ställer in värdet TRUE tillämpas inte överföringsfunktionen på den blå kanalen. Om du ställer in detta på FALSE tillämpas funktionen BlueDiscreteTransfer på den blå kanalen. |
Alfatabell D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE |
FLOAT[] {0.0f, 1.0f} |
Listan med värden som definierar överföringsfunktionen för Alpha-kanalen. |
AlphaDisable D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE |
BOOL FALSK |
Om du ställer in detta på TRUE tillämpas inte överföringsfunktionen på Alpha-kanalen. Om du anger värdet FALSE tillämpas funktionen AlphaDiscreteTransfer på Alpha-kanalen. |
ClampOutput D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT |
BOOL FALSK |
Om effekten klämmer ihop färgvärden till mellan 0 och 1 innan effekten skickar värdena till nästa effekt i diagrammet. Effekten klämmer fast värdena innan den premultiplies alfa. Om du ställer in detta på TRUE klämmer effekten fast värdena. Om du ställer in detta på FALSE kommer effekten inte att klämma in färgvärdena, men andra effekter och utdataytan kan klämma fast värdena om de inte har tillräckligt hög precision. |
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 |