Bagikan melalui


Efek transfer tabel

Gunakan efek transfer tabel untuk memetakan intensitas warna gambar menggunakan fungsi transfer yang dibuat dari menginterpolasi daftar nilai yang Anda berikan.

CLSID untuk efek ini CLSID_D2D1TableTransfer.

Contoh gambar

Gambar di sini menunjukkan input dan output efek transfer tabel.

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

tableTransferEffect->SetInput(0, bitmap);

float table[2] = {0.75f, 1.0f};
tableTransferEffect->SetValue(D2D1_TABLETRANSFER_PROP_BLUE_TABLE, table);

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

Fungsi transfer didasarkan pada daftar input V=(V0,V1,V2,V3, V? ,VN) di mana N adalah jumlah elemen - 1.

Intensitas piksel input direpresentasikan sebagai C. Intensitas piksel output, C dapat dihitung dengan persamaan.

Untuk nilai C, pilih nilai k, sehingga: k/N = C < (k+1)/N

Output C dihitung menggunakan persamaan berikut: C' = V? + (C - k/N) * N * (V??? 1? - V?)

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

Berikut adalah tampilan grafik fungsi transfer tabel jika properti tabel diatur ke [0.0, 0.25, 1.0].

grafik intensitas piksel untuk fungsi transfer tabel.

Properti efek

Nota

Nilai semua saluran properti transfer tabel tidak bersatu dan memiliki minimal 0,0 dan maksimum 1,0.

Nama tampilan dan enumerasi indeks Ketik dan nilai default Deskripsi
RedTable
D2D1_TABLETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
Daftar nilai yang digunakan untuk menentukan fungsi transfer untuk saluran Merah.
RedDisable
D2D1_TABLETRANSFER_PROP_RED_DISABLE
BOOL
PALSU
Jika Anda mengatur ini ke TRUE, efek tidak menerapkan fungsi transfer ke saluran Merah. Jika Anda mengatur ini ke FALSE, maka akan menerapkan fungsi RedTableTransfer ke saluran Merah.
GreenTable
D2D1_TABLETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
Daftar nilai yang digunakan untuk menentukan fungsi transfer untuk saluran Hijau.
GreenDisable
D2D1_TABLETRANSFER_PROP_GREEN_DISABLE
BOOL
PALSU
Jika Anda mengatur ini ke TRUE, efek tidak menerapkan fungsi transfer ke saluran Hijau. Jika Anda mengatur ini ke FALSE, fungsi GreenTableTransfer akan diterapkan ke saluran Hijau.
BlueTable
D2D1_TABLETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
Daftar nilai yang digunakan untuk menentukan fungsi transfer untuk saluran Biru.
BlueDisable
D2D1_TABLETRANSFER_PROP_BLUE_DISABLE
BOOL
PALSU
Jika Anda mengatur ini ke TRUE, efek tidak menerapkan fungsi transfer ke saluran Biru. Jika Anda mengatur ini ke FALSE, maka akan menerapkan fungsi BlueTableTransfer ke saluran Biru.
AlphaTable
D2D1_TABLE_TRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
Daftar nilai yang digunakan untuk menentukan fungsi transfer untuk saluran Alpha.
AlphaDisable
D2D1_TABLETRANSFER_PROP_ALPHA_DISABLE
BOOL
PALSU
Jika Anda mengatur ini ke TRUE, efek tidak menerapkan fungsi transfer ke saluran Alpha. Jika Anda mengatur ini ke FALSE, maka akan menerapkan fungsi AlphaTableTransfer ke saluran Alpha.
ClampOutput
D2D1_TABLETRANSFER_PROP_CLAMP_OUTPUT
BOOL
PALSU
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.

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