Efek komposit aritmatika
Gunakan efek komposit aritmatika untuk menggabungkan 2 gambar menggunakan jumlah piksel tertimbang dari gambar input.
CLSID untuk efek ini CLSID_D2D1ArithmeticComposite.
Rumus
Rumus di sini digunakan untuk menghitung efek ini.
Outputrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Di mana C1, C2, C3, C4 adalah koefisien yang Anda tetapkan.
Koefisien memetakan ke nilai dalam D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Contoh gambar
Contoh sederhananya adalah menambahkan piksel sumber dan tujuan. Dalam contoh, 2 persegi panjang bulat dikomposisikan bersama-sama. Persegi panjang sumber berwarna biru dan tujuannya berwarna merah.
Gambar di sini adalah output dari efek Aritmatika Komposit dengan koefisien persamaan yang diatur ke nilai di sini.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Hasilnya adalah bahwa nilai piksel untuk sumber dan tujuan ditambahkan. Wilayah di mana persegi panjang tidak tumpang tindih dengan nilai RGBA adalah 0. Di mana persegi panjang tumpang tindih warnanya magenta karena nilai R dan B keduanya maksimum.
Berikut adalah contoh gambar lain dengan kode.
Sebelum gambar 1 |
---|
![]() |
Sebelum gambar 2 |
![]() |
Sesudah |
![]() |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
Properti efek
Nama tampilan dan enumerasi indeks | Deskripsi |
---|---|
Koefisien D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Koefisien untuk persamaan yang digunakan untuk menyusun dua gambar input. Koefisien tidak bersatu dan tidak terbatas. Jenisnya D2D1_VECTOR_4F. Nilai defaultnya adalah {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
Efek menjepit nilai warna ke antara 0 dan 1 sebelum efek meneruskan nilai ke efek berikutnya dalam grafik. Jika Anda mengatur ini ke TRUE, efek akan menjepit nilai. Jika Anda mengatur ini ke FALSE, efek tidak akan menjepit nilai warna, tetapi efek lain dan permukaan output dapat menjepit nilai jika tidak memiliki presisi yang cukup tinggi. Jenisnya adalah BOOL. Nilai defaultnya adalah FALSE. |
Bitmap output
Bitmap output tergantung pada nilai koefisien. Ini adalah kemungkinan ukuran bitmap output.
- Jika C1 adalah satu-satunya koefisien non-nol, ukuran output adalah persimpangan persegi panjang input.
- Jika C2 adalah satu-satunya koefisien non-nol, ukuran output adalah ukuran persegi panjang Sumber.
- Jika C3 adalah satu-satunya koefisien non-nol, ukuran output adalah ukuran persegi panjang Tujuan.
- Jika semua koefisien adalah nol, ukuran output adalah persegi panjang kosong.
- Untuk semua nilai koefisien lainnya, ukuran output adalah penyatuan persegi panjang input.
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 |