Bagikan melalui


Efek matriks warna

Gunakan efek matriks warna untuk mengubah nilai RGBA bitmap.

Anda dapat menggunakan efek ini untuk:

  • Menghapus saluran warna dari gambar.
  • Kurangi warna dalam gambar.
  • Menukar saluran warna.
  • Gabungkan saluran warna.

Banyak efek bawaan adalah spesialisasi matriks warna yang dioptimalkan untuk penggunaan efek yang dimaksudkan. Contohnya termasuk saturasi, rona memutar, sepia, dan suhu dan warna.

CLSID untuk efek ini CLSID_D2D1ColorMatrix.

Contoh gambar

Contoh di sini menunjukkan gambar input dan output dari efek matriks warna yang menukar saluran merah dan biru.

Sebelum
gambar sebelum efek.
Sesudah
gambar setelah transformasi.
ComPtr<ID2D1Effect> colorMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ColorMatrix, &colorMatrixEffect);

colorMatrixEffect->SetInput(0, bitmap);
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(0, 0, 1, 0,   0, 1, 0, 0,   1, 0, 0, 0,   0, 0, 0, 1,   0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);

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

Efek ini mengalikan nilai RGBA gambar dengan matriks utama kolom 5x4, seperti yang ditunjukkan dalam persamaan ini.

contoh definisi matriks.

Efek ini bekerja pada gambar alfa lurus dan pramulatif.

Properti efek

Nama tampilan dan enumerasi indeks Deskripsi
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Matriks 5x4 nilai float. Elemen dalam matriks tidak terikat dan tidak bersatu.
Defaultnya adalah matriks identitas.
Jenisnya D2D1_MATRIX_5X4_F.
Nilai defaultnya adalah Matrix5x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0).
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
Mode alfa output. Lihat mode Alpha untuk informasi selengkapnya.
Jenisnya adalah D2D1_COLORMATRIX_ALPHA_MODE.
Nilai defaultnya adalah D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Apakah efek menjepit nilai warna ke antara 0 dan 1 sebelum efek meneruskan nilai ke efek berikutnya dalam grafik. Efek menjepit nilai sebelum premultiplies alfa .
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.

Mode alfa

Nama Deskripsi
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED Efek membatalkan premultip input, menerapkan matriks warna, dan melakukan premultip output.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT Efek menerapkan matriks warna langsung ke input, dan tidak melakukan pramultip output.

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