Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
- Karıştırma örnekleri
- Efekt özellikleri
- blend modlarını
-
HSL renk alanı dönüştürmeleri
- RGB'den HSL'ye dönüştürmeyi
- HSL'den RGB dönüştürme
- Çıktı bit eşlem
- Örnek kod
- Gereksinimleri
- İlgili konular
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
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 ![]() |
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ü.
![]() |
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 ![]() |
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) = ![]() |
D2D1_BLEND_MODE_HARD_LIGHT |
f(FRGB, BRGB) ile temel karışım formülleri = ![]() |
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 ![]() |
D2D1_BLEND_MODE_HARD_MIX |
f(FRGB, BRGB) ile temel karışım formülleri = ![]() |
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ü.
![]() |
D2D1_BLEND_MODE_DISSOLVE | Verilen:
Çö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.
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.
H 1'den büyük veya 2'den küçükse, değerler G>R>Bolduğu sarı/yeşil kesimdedir.
H 2'den büyük veya 3'ten küçükse, değerler G>B>Ryeşil/mavi kesimdedir.
H 3'ten büyük veya 4'ten küçükse, değerler B>G>Rolduğu mavi/mavi sektördedir.
H 4'ten büyük veya 4'e eşitse, değerler B >R>Gmavi/eflatun kesimindedir.
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 |