Aritmetisk sammansatt effekt
Använd den aritmetiska sammansatta effekten för att kombinera 2 bilder med en viktad summa bildpunkter från indatabilderna.
CLSID för den här effekten är CLSID_D2D1ArithmeticComposite.
- Formel
- Exempelbild
- egenskaper för effekt
- bitmapp för utdata
- Krav
- Relaterade ämnen
Formel
Formeln här används för att beräkna den här effekten.
Utdatargba = C1 * Källargba * Målrgba + C2 * Källargba + C3 * Målrgba + C4
Där C1, C2, C3, C4 är koefficienter som du anger.
Koefficienterna mappas till värdena i en D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Exempelbild
Ett enkelt exempel är att lägga till käll- och målpixlarna. I exemplet sammanfogas två rundade rektanglar. Källrektangeln är blå och målet är rött.
Bilden här är utdata från den aritmetiska sammansatta effekten med ekvationens koefficienter inställda på värdena här.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Resultatet är att pixelvärdena för källan och målet läggs till. De regioner där rektanglarna inte överlappar RGBA-värdena är alla 0. Där rektanglarna överlappar färgen är magenta eftersom både R- och B-värdena är högst.
Här är en annan exempelbild med kod.
Före bild 1 |
---|
![]() |
Före bild 2 |
![]() |
Efter |
![]() |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
Effektegenskaper
Visningsnamn och indexuppräkning | Beskrivning |
---|---|
Koefficienter D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Koefficienterna för den ekvation som används för att sammanställa de två indatabilderna. Koefficienterna är enhetslösa och obundna. Typen är D2D1_VECTOR_4F. Standardvärdet är {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
Effekten klämmer färgvärden till mellan 0 och 1 innan effekten skickar värdena till nästa effekt i diagrammet. 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. Typen är BOOL. Standardvärdet är FALSE. |
Utdatabitmapp
Utdatabitmappen beror på koefficientvärdena. Det här är de möjliga bitmappsstorlekarna för utdata.
- Om C1 är den enda koefficienten som inte är noll är utdatastorleken skärningspunkten för indatarektanglarna.
- Om C2 är den enda icke-nollkoefficienten är utdatastorleken storleken på källrektangeln.
- Om C3 är den enda koefficienten som inte är noll är utdatastorleken storleken på rektangeln Mål.
- Om alla koefficienter är noll är utdatastorleken en tom rektangel.
- För alla andra koefficientvärden är utdatastorleken en union av indatarektanglarna.
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 |