Aritmetik bileşik efekt

Giriş görüntülerinden alınan ağırlıklı piksel toplamını kullanarak 2 görüntüyü birleştirmek için aritmetik bileşik efekti kullanın.

Bu etki için CLSID CLSID_D2D1ArithmeticComposite.

Formül

Buradaki formül bu etkiyi hesaplamak için kullanılır.

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

Burada C1, C2, C3, C4 ayarladığınız katsayılardır.

Katsayılar bir D2D1_VECTOR_4F değerleriyle eşler (x, y, z, w):

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

Örnek resim

Basit bir örnek, kaynak ve hedef pikselleri eklemektir. Örnekte, 2 yuvarlatılmış dikdörtgen bir araya toplanmıştır. Kaynak dikdörtgen mavi ve hedef kırmızıdır.

Buradaki görüntü, denklemin katsayılarının buradaki değerlere ayarlandığı Aritmetik Bileşik efektin çıktısıdır.

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

Aritmetik bileşik efekt kullanılarak çakışan aynı boyuttaki 2 yuvarlatılmış dikdörtgeni gösteren örnek bir görüntü .

Sonuç, kaynak ve hedef için piksel değerlerinin eklenmesidir. Dikdörtgenlerin RGBA değerleriyle çakışmadığı bölgeler 0'dır. R ve B değerlerinin her ikisi de en yüksek düzeyde olduğundan dikdörtgenlerin renkle çakıştığı yerde eflatun kullanılır.

Kod içeren başka bir örnek görüntü aşağıda verilmiştır.

Görüntü 1'in öncesi
Efekt öncesinde ilk kaynak görüntüyü .
Görüntü 2'nin öncesi
Efekt öncesinde ikinci görüntüyü .
Sonra
Dönüştürmeden sonra görüntüyü .
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();

Efekt özellikleri

Görünen ad ve dizin numaralandırması Açıklama
Katsayı -ları
D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS
İki giriş resmini birleştirmede kullanılan denklemin katsayıları. Katsayılar birimsiz ve ilişkisizdir. Tür D2D1_VECTOR_4F.
Varsayılan değer: {1.0f, 0.0f, 0.0f, 0.0f}.
ClampOutput
D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT
Efekt, değerleri grafikteki bir sonraki efekte geçirmeden önce renk değerlerini 0 ile 1 arasında bir değere kelepçeler.
Bunu TRUE olarak ayarlarsanız, efekt değerleri sıkıştıracaktır. Bunu YANLIŞ olarak ayarlarsanız, efekt renk değerlerini sıkıştırmaz, ancak diğer efektler ve çıkış yüzeyi yeterince yüksek duyarlıkta değilse değerleri sıkıştırabilir.
Tür BOOL'dir.
Varsayılan değer YANLIŞ'tır.

Çıktı bit eşlemi

Çıktı bit eşlemi katsayı değerlerine bağlıdır. Bunlar olası çıkış bit eşlem boyutlarıdır.

  • C1 sıfır olmayan tek katsayıysa, çıkış boyutu giriş dikdörtgenlerinin kesişimidir.
  • Sıfır olmayan tek katsayı C2 ise, çıkış boyutu Kaynak dikdörtgeninin boyutudur.
  • Sıfır olmayan tek katsayı C3 ise, çıkış boyutu Hedef dikdörtgenin boyutudur..
  • Tüm katsayılar sıfırsa, çıkış boyutu boş bir dikdörtgendir.
  • Diğer tüm katsayı değerleri için çıkış boyutu, giriş dikdörtgenlerinin birleşimidir.

Gereksinim -leri

Gereksinim Değer
Desteklenen en düşük istemci Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Desteklenen en düşük sunucu Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Üstbilgi d2d1effects.h
Kütüphane d2d1.lib, dxguid.lib

ID2D1Fefek