Aracılığıyla paylaş


2B benfin dönüşüm efekti

2B benfin dönüştürme efekti, Direct2D matrisini kullanarak 3X2 matrisi temelinde bir görüntüye uzamsal dönüşüm uygular dönüştürme ve altı ilişkilendirme modundan herhangi birini kullanarak. Bir görüntüyü döndürmek, ölçeklendirmek, eğmek veya çevirmek için bu efekti kullanabilirsiniz. İsterseniz bu işlemleri birleştirebilirsiniz. Benfin aktarımları paralel çizgileri ve görüntüdeki herhangi bir üç nokta arasındaki uzaklık oranını korur.

Bu etki için CLSID CLSID_D2D12DAffineTransform.

Örnek resim

Önce
Efektin önüne görüntüyü .
Sonra
Dönüştürmeden sonra görüntüyü .
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInput(0, bitmap);

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f,   0.1f, 0.9f,   8.0f, 45.0f);

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

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

Bu etki şu matris işlemini gerçekleştirir:

matris işlemi

Giriş matrisi 3x2 matrisi olarak tanımlansa da, kare matris oluşturmak için son sütun 0, 0 ve 1 ile doldurulur. Bu, matris çarpmasına olanak tanır, böylece dönüşümler tek bir matriste birleştirilebilir.

Efekt özellikleri

Görünen ad ve dizin numaralandırması Açıklama
InterpolationMode
D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE
Görüntüyü ölçeklendirmek için kullanılan ilişkilendirme modu. Kalite ve hız aralığında 6 ölçek modu vardır.
Tür D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE.
Varsayılan değer D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_2DAFFINETRANSFORM_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.
TransformMatrix
D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX
Direct2D matrisini kullanarak görüntüyü dönüştürmek için 3x2 matrisi dönüştürün.
Tür D2D1_MATRIX_3X2_F.
Varsayılan değer Matrix3x2F::Identity()'dir.
Net -lik
D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS
Yüksek kaliteli kübik ilişkilendirme modunda, ölçeklendirme filtresinin keskinlik düzeyi 0 ile 1 arasında bir float olarak. Değerler birimsizdir. Görüntüyü ölçeklendirirken görüntünün kalitesini ayarlamak için netlik kullanabilirsiniz.
Keskinlik faktörü çekirdeğin şeklini etkiler. Netlik faktörü ne kadar yüksek olursa çekirdek de o kadar küçük olur.
Not: Bu özellik yalnızca yüksek kaliteli kübik ilişkilendirme modunu etkiler.
Tür FLOAT'dır.
Varsayılan değer 0,0f'dir.

Kenarlık modları

Ad Açıklama
D2D1_BORDER_MODE_SOFT Efekt, görüntüyü ara değer olarak saydam siyah piksellerle doldurur ve yumuşak bir kenar elde eder.
D2D1_BORDER_MODE_HARD Efekt, çıkışı giriş görüntüsünün boyutuna sıkıştırır.

İlişkilendirme modları

Sayım Açıklama
D2D1_2DAFFINETRANSFORM_INTERPOLATION_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR Dört noktalı örnek ve doğrusal ilişkilendirme kullanır. Bu mod, en yakın komşu modundan daha fazla işlem süresi kullanır, ancak daha yüksek kaliteli bir görüntü oluşturur.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_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_2DAFFINETRANSFORM_INTERPOLATION_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Bit eşlemin dönüştürülmüş şekline göre bir desen örneklemek için anizotropik filtreleme kullanır.
D2D1_2DAFFINETRANSFORM_INTERPOLATION_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR olur.

Not

Anisotropik mod ölçeklendirme sırasında mipmap'ler oluşturur, ancak bu etkiye giriş olan efektlerde önbelleğe alınmış özelliğini true olarak ayarlarsanız, yeterince küçük görüntüler için her seferinde mipmap'ler oluşturulmaz.

Çıktı bit eşlemi

Çıktı bit eşleminin boyutu, görüntüye uygulanan dönüştürme matrisine bağlıdır.

Etkisi dönüştürme işlemini gerçekleştirir ve ardından sonucun etrafına sınırlayıcı bir kutu uygular. Çıktı bit eşlemi sınırlayıcı kutunun boyutudur.

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