Delen via


Rekenkundig samengesteld effect

Gebruik het rekenkundige samengestelde effect om 2 afbeeldingen te combineren met behulp van een gewogen som van pixels van de invoerafbeeldingen.

De CLSID voor dit effect is CLSID_D2D1ArithmeticComposite.

Formule

De formule hier wordt gebruikt om dit effect te berekenen.

Outputrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4

Waarbij C1, C2, C3, C4 coëfficiënten zijn die u instelt.

De coëfficiënten worden toegewezen aan de waarden in een D2D1_VECTOR_4F (x, y, z, w):

  • x = C1
  • y = C2
  • z = C3
  • w = C4

Voorbeeldafbeelding

Een eenvoudig voorbeeld is het toevoegen van de bron- en doel pixels. In het voorbeeld worden twee afgeronde rechthoeken samengevoegd. De bronrechthoek is blauw en de bestemming is rood.

De afbeelding hier is de uitvoer van het rekenkundige samengestelde effect met de coëfficiënten van de vergelijking die hier zijn ingesteld op de waarden.

  • C1 = 0
  • C2 = 1
  • C3 = 1
  • C4 = 0

een voorbeeldafbeelding met 2 afgeronde rechthoeken van dezelfde grootte die overlappen met behulp van het rekenkundige samengestelde effect.

Het resultaat is dat de pixelwaarden voor de bron en het doel worden toegevoegd. De gebieden waar de rechthoeken niet overlappen, overlappen de RGBA-waarden allemaal 0. Wanneer de rechthoeken de kleur magenta overlappen, omdat de R- en B-waarden beide maximaal zijn.

Hier volgt een andere voorbeeldafbeelding met code.

Voor afbeelding 1
de eerste bronafbeelding vóór het effect.
Voor afbeelding 2
de tweede afbeelding vóór het effect.
Na
de afbeelding na de transformatie.
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();

Effecteigenschappen

Weergavenaam en indexenumeratie Beschrijving
Coëfficiënten
D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS
De coëfficiënten voor de vergelijking die wordt gebruikt voor het samenstellen van de twee invoerafbeeldingen. De coëfficiënten zijn eenheidsloos en niet-gebonden. Type is D2D1_VECTOR_4F.
De standaardwaarde is {1.0f, 0.0f, 0.0f, 0.0f}.
ClampOutput
D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT
De effectklemmen kleurenwaarden tussen 0 en 1 voordat het effect de waarden doorgeeft aan het volgende effect in de grafiek.
Als u dit instelt op TRUE, zal het effect de waarden vastzetten. Als u dit instelt op ONWAAR, zal het effect de kleurwaarden niet klemen, maar andere effecten en het uitvoeroppervlak de waarden mogelijk vastzetten als ze niet van hoge precisie zijn.
Type is BOOL.
De standaardwaarde is FALSE.

Uitvoer bitmap

De uitvoer bitmap is afhankelijk van de coëfficiëntwaarden. Dit zijn de mogelijke uitvoer bitmapgrootten.

  • Als C1 de enige niet-nulcoëfficiënt is, is de uitvoergrootte het snijpunt van de invoerrechthoeken.
  • Als C2 de enige niet-nulcoëfficiënt is, is de uitvoergrootte de grootte van de rechthoek Bron.
  • Als C3 de enige niet-nulcoëfficiënt is, is de uitvoergrootte de grootte van de doelrechthoek..
  • Als alle coëfficiënten nul zijn, is de uitvoergrootte een lege rechthoek.
  • Voor alle andere coëfficiëntwaarden is de uitvoergrootte de samenvoeging van de invoerrechthoeken.

Eisen

Eis Waarde
Minimaal ondersteunde client Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Minimaal ondersteunde server Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps]
Rubriek d2d1effects.h
Bibliotheek d2d1.lib, dxguid.lib

ID2D1Effect-