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.
Bir görüntüye rastgele 2B çekirdek uygulamak için karmaşık matris efektini kullanın. Bu efekti kullanarak bir görüntüyü bulanıklaştırabilir, kenarları algılayabilir, kabarabilir veya netleştirebilirsiniz.
Bu etki için CLSID CLSID_D2D1ConvolveMatrix.
- Örnek görüntü
- Efekt özellikleri
- Ölçek modları
- Kenarlık modları
- Çıktı bit eşlem
- Gereksinimleri
- İlgili konular
Örnek resim
Buradaki örnekte, 3 x 3 çekirdek içeren konvolve matris efektinin girişi ve çıkışı gösterilmektedir.
| Önce |
|---|
Efektin önüne görüntüyü ![]() |
| Sonra |
Dönüştürmeden sonra görüntüyü ![]() |
ComPtr<ID2D1Effect> convolveMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ConvolveMatrix, &convolveMatrixEffect);
convolveMatrixEffect->SetInput(0, bitmap);
float matrix[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1};
convolveMatrixEffect->SetValue(D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(convolveMatrixEffect.Get());
m_d2dContext->EndDraw();
Efekt özellikleri
| Görünen ad ve dizin numaralandırması | Açıklama |
|---|---|
| KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
Çekirdekteki bir birimin boyutu. Birimler (DIPs/çekirdek birimi) içindedir; burada çekirdek birimi, convolution çekirdeğindeki öğenin boyutudur. 1 (DIP/çekirdek birimi) değeri, 96 DPI'daki bir görüntüdeki bir piksele karşılık gelir. Tür FLOAT'dır. Varsayılan değer 1,0f'dir. |
| ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
Efektin görüntüyü ilgili çekirdek birimi uzunluğuna ölçeklendirmek için kullandığı ilişkilendirme modu. Kalite ve hız olarak değişen altı ölçek modu vardır. Türü D2D1_CONVOLVEMATRIX_SCALE_MODE. Varsayılan değer D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR. |
| KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
Çekirdek matrisinin genişliği. Birimler çekirdek birimlerinde belirtilir. Türü UINT32'dir. Varsayılan değer 3'dür. |
| KernelSizey D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
Çekirdek matrisinin yüksekliği. Birimler çekirdek birimlerinde belirtilir. Türü UINT32'dir. Varsayılan değer 3'dür. |
| KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
Görüntüye uygulanacak çekirdek matrisi. Çekirdek öğeleri sınırlanmamıştır ve float olarak belirtilir. FLOAT[] içindeki ilk KernelSizeX sayısı, çekirdekteki ilk satıra karşılık gelir. İkinci KernelSizeX numarası kümesi ikinci satıra karşılık gelir ve en çok KernelSizeY satırlarına karşılık gelir. Tür FLOAT[] şeklindedir. Varsayılan değer{0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f} şeklindedir. |
| Bölen D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
Çekirdek matrisi bir piksele uygulanır ve sonuç bu değere bölünür. 0, float epsilon değeri olarak davranır. Tür FLOAT'dır. Varsayılan değer 1,0f'dir. |
| Önyargı D2D1_CONVOLVEMATRIX_PROP_BIAS |
Bu etki çekirdek matrisini, böleni uygular ve ardından sonuda yanlılık eklenir. Yanlılık sınırsız ve birimsizdir. Tür FLOAT'dır. Varsayılan değer 0,0f'dir. |
| KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
Konvolüsyon çekirdeğini çıkış pikselinde ortalanmış bir konumdan, sol/sağ ve yukarı/aşağı olarak belirttiğiniz bir konuma kaydırır. Uzaklık çekirdek birimlerinde tanımlanır. Bazı uzaklıklar ve çekirdek boyutlarıyla, convolution çekirdeğinin örnekleri piksel görüntü merkezine gelmez. Çekirdek örneğinin piksel değerleri bilinear ilişkilendirme ile hesaplanır. Türü D2D1_VECTOR_2F. Varsayılan değer: {0.0f, 0.0f}. |
| PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
Convolution çekirdeğinin alfa kanalına mı yoksa yalnızca renk kanallarına mı uygulanacağını belirtir. Bunu TRUE olarak ayarlarsanız convolution çekirdeği yalnızca renk kanallarına uygulanır. Bunu FALSE olarak ayarlarsanız tüm kanallara konvolüsyon çekirdeği uygulanır. Türü BOOL'dir. Varsayılan değer YANLIŞ'tır. |
| BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
Görüntünün kenarını yumuşak veya sert olarak hesaplamak için kullanılan mod. Daha fazla bilgi için bkz. Kenarlık modları. Türü D2D1_BORDER_MODE. Varsayılan değer D2D1_BORDER_MODE_SOFT. |
| ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
Efektin renk değerlerini efektten önce 0 ile 1 arasında bir değere sıkıştırıp bağlamadığı, değerleri grafikteki bir sonraki efekte geçirir. Etkisi, alfayı önceden yüklemeden önce değerleri sıkıştırıyor. 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. |
Ölçek modları
| Sayım | Açıklama |
|---|---|
| D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | En yakın tek noktayı örnekler ve bunu kullanır. Bu mod daha az işlem süresi kullanır, ancak en düşük kaliteli görüntüyü görüntüler. |
| D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | Dört noktalı örnek ve doğrusal ilişkilendirme kullanır. Bu mod, en yakın komşu moduna göre daha yüksek kaliteli bir görüntü oluşturur. |
| D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | İlişkilendirme için 16 örnek kübik çekirdek kullanır. Bu mod en fazla işlem süresini kullanır, ancak daha yüksek kaliteli bir görüntü oluşturur. |
| D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | İyi kenar diğer adlara karşı koruma için tek bir piksel içinde 4 doğrusal örnek kullanır. Bu mod, birkaç piksel içeren görüntülerde küçük miktarlarda ölçeği küçültmek için iyidir. |
| D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | Bit eşlemin dönüştürülmüş şekline göre bir desen örneklemek için anizotropik filtreleme kullanır. |
| D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | Dönüştürme matrisinde downscaling söz konusuysa görüntüyü önceden küçültmek için değişken boyutlu yüksek kaliteli kübik çekirdek kullanır. Ardından son çıkış için küp ilişkilendirme modunu kullanır. |
Not
Mod seçmezseniz efekt varsayılan olarak D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR olur.
Kenarlık modları
| Ad | Açıklama |
|---|---|
| D2D1_BORDER_MODE_SOFT | Efekt, konvolüsyon çekirdeğini uyguladığında giriş sınırlarının dışındaki örnekler için giriş görüntüsünü saydam siyah piksellerle tuş takımına ekler. Bu, görüntü için yumuşak bir kenar oluşturur ve işlemde çıktı bit eşlemini çekirdeğin boyutuna göre genişletir. |
| D2D1_BORDER_MODE_HARD | Etkisi, giriş görüntüsünü giriş sınırlarının dışındaki örnekler için yansıtma türü kenarlık dönüşümüyle genişletir. Çıktı bit eşleminin boyutu, giriş bit eşleminin boyutuna eşittir. |
Çıktı bit eşlemi
Efektin çıkışının boyutu, konvolüsyon çekirdeğinin boyutuna, çekirdek uzaklığına, çekirdek birimi uzunluğuna ve kenarlık modu ayarına bağlıdır.
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 |

