Bagikan melalui


Efek transfer Gamma

Gunakan efek transfer gamma untuk memetakan intensitas warna gambar menggunakan fungsi gamma yang dibuat menggunakan amplitudo, eksponen, dan offset yang Anda sediakan untuk setiap saluran.

CLSID untuk efek ini CLSID_D2D1GammaTransfer. Untuk menggunakan efek ini, tambahkan dxguid.lib ke dependensi linker.

Contoh gambar

Sebelumnya
gambar sebelum efek.
Sesudahnya
gambar setelah transformasi.
ComPtr<ID2D1Effect> gammaTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1GammaTransfer, &gammaTransferEffect);

gammaTransferEffect->SetInput(0, bitmap);

gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);

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

Efek ini menerapkan fungsi transfer gamma berdasarkan persamaan di sini.

Intensitas piksel input direpresentasikan sebagai C dan intensitas piksel output sebagai C'. C' = Amplitude *C Exponent + Offset

Efek ini bekerja pada gambar alfa lurus dan pramultip. Efek menghasilkan bitmap alfa yang telah dikutip sebelumnya.

Properti efek

Catatan

Untuk semua saluran properti transfer gamma:

  • Nilai amplitude tidak terikat dan tidak bersatu.
  • Nilai eksponen tidak dibatasi dan tidak bersatu.
  • Nilai offset tidak terikat dan tidak bersatu.
Nama tampilan dan enumerasi indeks Deskripsi
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Amplitude fungsi transfer gamma untuk saluran Merah. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
RedExponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Eksponen fungsi transfer gamma untuk saluran Merah. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Offset fungsi transfer gamma untuk saluran Merah. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 0,0f.
RedDisable
D2D1_GAMMATRANSFER_PROP_RED_DISABLE
Jika Anda mengatur ini ke TRUE, itu tidak menerapkan fungsi transfer ke saluran Merah. Fungsi transfer identitas digunakan. Jika Anda mengatur ini ke FALSE, fungsi transfer gamma akan diterapkan ke saluran Merah. Jenisnya adalah BOOL.
Nilai defaultnya adalah FALSE.
GreenAmplitude
D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE
Amplitude fungsi transfer gamma untuk saluran Hijau. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
GreenExponent
D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT
Eksponen fungsi transfer gamma untuk saluran Hijau. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
GreenOffset
D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET
Offset fungsi transfer gamma untuk saluran Hijau. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 0,0f.
GreenDisable
D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE
Jika Anda mengatur ini ke TRUE, itu tidak menerapkan fungsi transfer ke saluran Hijau. Fungsi transfer identitas digunakan. Jika Anda mengatur ini ke FALSE, fungsi transfer gamma akan diterapkan ke saluran Hijau. Jenisnya adalah BOOL.
Nilai defaultnya adalah FALSE.
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
Amplitude fungsi transfer gamma untuk saluran Biru. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
Eksponen fungsi transfer gamma untuk saluran Biru. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
Offset fungsi transfer gamma untuk saluran Biru. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 0,0f.
BlueDisable
D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE
Jika Anda mengatur ini ke TRUE, itu tidak menerapkan fungsi transfer ke saluran Biru. Fungsi transfer identitas digunakan. Jika Anda mengatur ini ke FALSE, fungsi transfer gamma akan diterapkan ke saluran Biru. Jenisnya adalah BOOL.
Nilai defaultnya adalah FALSE.
AlphaAmplitude
D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE
Amplitude fungsi transfer gamma untuk saluran alfa. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
AlphaExponent
D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT
Eksponen fungsi transfer gamma untuk saluran alfa. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 1,0f.
AlphaOffset
D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET
Offset fungsi transfer gamma untuk saluran alfa. Jenisnya adalah FLOAT.
Nilai defaultnya adalah 0,0f.
AlphaDisable
D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE
Jika Anda mengatur ini ke TRUE, itu tidak menerapkan fungsi transfer ke saluran alfa. Fungsi transfer identitas digunakan. Jika Anda mengatur ini ke FALSE, fungsi transfer gamma akan diterapkan ke saluran alfa. Jenisnya adalah BOOL.
Nilai defaultnya adalah FALSE.
ClampOutput
D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT
Apakah efek menjepit nilai warna menjadi antara 0 dan 1 sebelum efek meneruskan nilai ke efek berikutnya dalam grafik. Efek menjepit nilai sebelum mendahului alfa .
Jika Anda mengatur ini ke TRUE, efek akan menjepit nilai. Jika Anda mengatur ini ke FALSE, efeknya 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

Ukuran bitmap output sama dengan ukuran bitmap input.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Server minimum yang didukung Windows 8 dan Pembaruan Platform untuk Windows 7 [aplikasi desktop | Aplikasi Bursa Windows]
Header d2d1effects.h
Pustaka d2d1.lib, dxguid.lib

ID2D1Effect