Aracılığıyla paylaş


Blend efekti

2 görüntüyü birleştirmek için blend efektini kullanın. Bu efekt 26 karışım moduna sahiptir.

Bu etki için CLSID CLSID_D2D1Blend.

Harmanlama örnekleri

Burada, blend efektinin her karıştırma modunun örnek bir görüntüsü verilmiştir. Blend modlarının ve ilgili mod özelliklerinin tam listesi sonraki bölümdedir

tüm kullanılabilir karışım modlarının efekt örneği ekran görüntüsü.

Dışlama modunu kullanan başka bir örnek aşağıda verilmiştir.

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> blendEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Blend, &blendEffect);

blendEffect->SetInput(0, bitmap);
blendEffect->SetInput(1, bitmapTwo);
blendEffect->SetValue(D2D1_BLEND_PROP_MODE, D2D1_BLEND_MODE_EXCLUSION);

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

Efekt özellikleri

Görünen ad ve dizin numaralandırması Açıklama
Mod
D2D1_BLEND_PROP_MODE
Efekt için kullanılan karıştırma modu. Daha fazla bilgi için bkz. Blend modları. Türü D2D1_BLEND_MODE.
Varsayılan değer D2D1_BLEND_MODE_MULTIPLY.

Blend modları

Buradaki tabloda bu efektin tüm karışım modları gösterilmektedir. Efektin çıkışını hesaplamak için gereken yardımcı işlevler sonraki bölümdedir.

Renk: OPRGB = f(FRGB, BRGB) * FA * BA + FRGB * FA * (1 - BA) + BRGB * BA * (1 - FA)

Alfa: OA = FA * (1 - BA) + BA

Nerede:

  • OPRGB, önceden çarpılmış çıkış rengidir
  • O Çıktı Alfa'dır
  • BRGB, önceden çarpılmamış hedef rengidir
  • BA hedef alfadır
  • FRGB önceden çarpılmamış kaynak rengidir
  • FA kaynak alfadır
  • f(SRGB, DRGB) blend moduna göre değişen bir blend işlevidir

Karışım modlarından bazıları ton, doygunluk, parlaklık (HSL) renk alanına ve oradan RGB'ye dönüştürme gerektirir.

Sayım Denklem
D2D1_BLEND_MODE_DARKEN Yalnızca alfa için temel karışım formülü. Karartma efekti için matematiksel formül .
D2D1_BLEND_MODE_MULTIPLY Yalnızca alfa için temel karışım formülü. Çarpma efekti için Matematiksel formülü .
D2D1_BLEND_MODE_COLOR_BURN f(FRGB, BRGB) = bir coor yanık efekti için matematiksel formül ile temel karışım formülleri.
D2D1_BLEND_MODE_LINEAR_BURN f(FRGB, BRGB) ile temel karışım formülleri = doğrusal yazma efekti için matematiksel formül .
D2D1_BLEND_MODE_DARKER_COLOR Yalnızca alfa için temel karışım formülü. Koyu renk efekti için Matematiksel formül .
D2D1_BLEND_MODE_LIGHTEN Yalnızca alfa için temel karışım formülü. Bir açık etki için matematiksel formül.
D2D1_BLEND_MODE_SCREEN Yalnızca alfa için temel karışım formülü. Ekran efekti için Matematiksel formül .
D2D1_BLEND_MODE_COLOR_DODGE f(FRGB, BRGB) ile temel karışım formülleri = renk atlatma efekti için matematiksel formül .
D2D1_BLEND_MODE_LINEAR_DODGE f(FRGB, BRGB) = doğrusal bir soldurma efekti için matematiksel formül ile temel karışım formülleri.
D2D1_BLEND_MODE_LIGHTER_COLOR Yalnızca alfa için temel karışım formülü. Açık renk efekti için Matematiksel formül .
D2D1_BLEND_MODE_OVERLAY f(FRGB, BRGB) ile temel karışım formülleri = yer paylaşım efekti için matematiksel formül .
D2D1_BLEND_MODE_SOFT_LIGHT f(FRGB, BRGB) = Yumuşak ışık efekti için Matematiksel formül içeren temel karışım formülleri.
D2D1_BLEND_MODE_HARD_LIGHT f(FRGB, BRGB) ile temel karışım formülleri = Sert ışık efekti için Matematiksel formül.
D2D1_BLEND_MODE_VIVID_LIGHT f(FRGB, BRGB) ile temel karışım formülleri = canlı bir ışık efekti için matematiksel formül .
D2D1_BLEND_MODE_LINEAR_LIGHT f(FRGB, BRGB) ile temel karışım formülleri = doğrusal ışık efekti için matematiksel formül .
D2D1_BLEND_MODE_PIN_LIGHT f(FRGB, BRGB) = pin ışığı efekti için matematiksel formül temel karışım formülleri.
D2D1_BLEND_MODE_HARD_MIX f(FRGB, BRGB) ile temel karışım formülleri = Sert karışım efekti için Matematiksel formül.
D2D1_BLEND_MODE_DIFFERENCE f(FRGB, BRGB) = abs(FRGB - BRGB) ile temel karışım formülleri
D2D1_BLEND_MODE_EXCLUSION f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB ile temel karışım formülleri
D2D1_BLEND_MODE_HUE Yalnızca alfa için temel karışım formülü. Ton karışımı efekti için matematiksel formülü .
D2D1_BLEND_MODE_SATURATION Yalnızca alfa için temel karışım formülü. Doygunluk karışımı efekti için matematiksel formülü .
D2D1_BLEND_MODE_COLOR Yalnızca alfa için temel karışım formülü. Renk karışımı efekti için Matematiksel formül .
D2D1_BLEND_MODE_LUMINOSITY Yalnızca alfa için temel karışım formülü. Parlaklık karışımı efekti için matematiksel formül.
D2D1_BLEND_MODE_DISSOLVE Verilen:
  • Geçerli piksel için XY sahne koordinatı
  • [0, 1] değerlerin sapmasız dağılımıyla, çekirdek koordinatı XY'yi temel alan belirlenimci sahte-rastgele sayı oluşturucu rand(XY)

Çözünmüş karışım efekti için matematiksel formülü .
D2D1_BLEND_MODE_SUBTRACT Yalnızca alfa için temel karışım formülü. Çıkarma karışımı efekti için Matematiksel formülü .
D2D1_BLEND_MODE_DIVISION Yalnızca alfa için temel karışım formülü. Bölme karışımı efekti için Matematiksel formül .

Not

Tüm Blend modlarında çıkış değeri önceden çoğaltılır ve [0, 1] aralığına sıkıştırılır.

HSL renk alanı dönüştürmeleri

Parlaklık bileşeni buradaki RGB ağırlıkları kullanılarak hesaplanır:

  • kR = 0,30
  • kG = 0,59
  • kB = 0,11

RGB'den HSL'ye dönüştürme

rgb renginden hsl rengine dönüşümü açıklayan matematiksel formülü .

Bu S ve L [0.0, 1.0] aralığına ve H [-1.0, 5.0] aralığına yerleştirir.

HSL'den RGB'ye dönüştürme

Diğer yöntemi dönüştürmek için önceki hesaplamaların tersini kullanırız.

S = 0 R = G = B = L

Aksi takdirde altı tona bağımlı durum vardır:

H 0'dan büyükse, değerler R >B>Gkırmızı/eflatun kesimindedir.

matematiksel ekvator, hsl rengini rgb'ye dönüştüren altı adımdan biri.

H 0'dan büyük veya 0'a eşit ve 1'den küçükse, değerler R >G>Bkırmızı/sarı kesimdedir.

matematiksel ekvator adımı altı hsl rengini rgb'ye dönüştürüyor.

H 1'den büyük veya 2'den küçükse, değerler G>R>Bolduğu sarı/yeşil kesimdedir.

matematiksel ekvator adım üç altı dönüştürme hsl renk rgb.

H 2'den büyük veya 3'ten küçükse, değerler G>B>Ryeşil/mavi kesimdedir.

matematiksel ekvator adımı, hsl rengini rgb'ye dönüştüren altı adımın dördü.

H 3'ten büyük veya 4'ten küçükse, değerler B>G>Rolduğu mavi/mavi sektördedir.

matematiksel ekvator adımı altı hsl rengini rgb'ye dönüştürüyor.

H 4'ten büyük veya 4'e eşitse, değerler B >R>Gmavi/eflatun kesimindedir.

matematiksel ekvator adımı altı hsl rengini rgb'ye dönüştürür.

Karıştırma modları iki farklı renkten HSL bileşenlerinin rastgele birleşimlerini sağladığından, dönüştürülen RGB değerinin gamut dışında olması yaygındır; yani bir veya daha fazla kanal bileşeni yasal [0.0, 1.0] aralığının dışında olabilir. Bu renkler, doygunluğu en aza indirerek ve hem ton hem de parlaklık korunarak tekrar gamut haline getirilir:

Gamut dışı örnekler için gereken düzeltmeleri açıklayan matematiksel formül .

Çıktı bit eşlemi

Bu efektin çıktı bit eşlemi her zaman iki giriş görüntüsü birleşiminin boyutudur.

Örnek kod

Bu etkinin bir örneği için Direct2D bileşik efekt modları örneğini indirin.

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