Efek bayangan
Gunakan efek bayangan untuk menghasilkan bayangan dari saluran alfa gambar. Bayangan lebih buram untuk nilai alfa yang lebih tinggi dan lebih transparan untuk nilai alfa yang lebih rendah. Anda dapat mengatur jumlah kabur dan warna bayangan.
CLSID untuk efek ini CLSID_D2D1Shadow.
Contoh gambar
Contoh di sini menunjukkan output efek bayangan yang diterjemahkan ke bawah dan kanan dengan gambar sumber yang disusun di atasnya di lokasi asli. Efek bayangan hanya menghasilkan bayangan.
Sebelum |
---|
![]() |
Sesudah |
![]() |
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);
shadowEffect->SetInput(0, bitmap);
// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);
floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInputEffect(0, shadowEffect.Get());
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();
Properti efek
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
Jumlah kabur yang akan diterapkan ke saluran alfa gambar. Anda dapat menghitung radius kabur kernel dengan mengalikan simpantan standar dengan 3. Unit penyimpangan standar dan radius kabur adalah DIP. Properti ini sama dengan properti penyimpangan standar Gaussian Blur. Jenisnya adalah FLOAT. Nilai defaultnya adalah 3,0f. |
Warna D2D1_SHADOW_PROP_COLOR |
Warna bayangan jatuh. Properti ini adalah D2D1_VECTOR_4F yang didefinisikan sebagai: (R, G, B, A). Anda harus menentukan warna ini dalam alfa lurus. Jenisnya D2D1_VECTOR_4F. Nilai defaultnya adalah {0.0f, 0.0f, 0.0f, 1.0f}. |
Optimasi D2D1_SHADOW_PROP_OPTIMIZATION |
Tingkat pengoptimalan performa. Jenisnya D2D1_SHADOW_OPTIMIZATION. Nilai defaultnya adalah D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Mode pengoptimalan
Nama | Deskripsi |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Menerapkan pengoptimalan internal seperti pra-penskalaan pada radii yang relatif kecil. Menggunakan pemfilteran linier. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Menggunakan ambang pengoptimalan yang sama dengan mode Kecepatan, tetapi menggunakan pemfilteran trilinear. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Hanya menggunakan pengoptimalan internal dengan radii kabur besar, di mana perkiraan cenderung tidak terlihat. Menggunakan pemfilteran trilinear. |
Bitmap output
Ukuran bitmap output adalah ukuran output kabur. Jumlah pertumbuhan bitmap output relatif terhadap bitmap asli dapat dihitung menggunakan persamaan berikut:
Pertumbuhan Bitmap Output (X dan Y) = BlurStandardDeviation (piksel independen perangkat (DIP))*6*(DPI Pengguna)/96
Output meningkat sama ke segala arah, jadi misalnya jika ukuran meningkat 10 piksel di setiap arah, sudut kiri atas bitmap terletak di (-5, -5) dan kanan bawah akan berada di (105, 105) seperti yang ditunjukkan pada diagram di sini.
Persyaratan
Syarat | Nilai |
---|---|
Klien minimum yang didukung | Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows] |
Server minimum yang didukung | Pembaruan Windows 8 dan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows] |
Header | d2d1effects.h |
Perpustakaan | d2d1.lib, dxguid.lib |