Bagikan melalui


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

contoh gambar yang menunjukkan 2 persegi panjang bulat dengan ukuran yang sama yang tumpang tindih menggunakan efek komposit aritmatika.

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
gambar sumber pertama sebelum efek.
Sebelum gambar 2
gambar kedua sebelum efek.
Sesudah
gambar setelah transformasi.
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

ID2D1Effect