Bagikan melalui


Efek histogram

Gunakan efek histogram untuk menghasilkan histogram untuk bitmap input berdasarkan jumlah bin yang ditentukan.

CLSID untuk efek ini CLSID_D2D1Histogram.

Contoh

Sebelumnya
gambar sebelum efek.
Grafik data output histogram
gambar setelah transformasi.
ComPtr<ID2D1Effect> histogramEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Histogram, &histogramEffect);

histogramEffect->SetInputEffect(0, m_2DAffineTransformEffectRight.Get());
histogramEffect->SetValue(D2D1_HISTOGRAM_PROP_CHANNEL_SELECT, D2D1_CHANNEL_SELECTOR_G);

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

// The histogram data is only available once the effect has been 'drawn'.
int histogramBinCount;

HRESULT hr = histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_NUM_BINS, &histogramBinCount);

float *histogramData = new float[histogramBinCount];
hr = histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT, 
                               reinterpret_cast<BYTE*>(histogramData), 
                               histogramBinCount * sizeof(float));

Properti efek

Berikut adalah persamaan untuk menghasilkan output.

persamaan untuk menghasilkan output efek histogram.

i dievaluasi dari 0 hingga jumlah bin. Efek menghasilkan histogram untuk nilai piksel antara 0 dan 1. Nilai di luar rentang ini dijepit ke rentang. Rentang wadah tertentu tergantung pada jumlah wadah. Efek ini bekerja pada piksel bitmap lurus. Saluran warna bitmap input dibagi dengan saluran alfa untuk menghitung efek ini.

Nama tampilan dan enumerasi indeks Ketik dan nilai default Deskripsi
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Menentukan jumlah bin yang digunakan untuk histogram. Rentang nilai intensitas yang termasuk dalam wadah tertentu bergantung pada jumlah wadah yang ditentukan.
Pilihan Saluran
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Menentukan saluran yang digunakan untuk menghasilkan histogram. Efek ini memiliki output data tunggal yang sesuai dengan saluran yang ditentukan. Lihat Pemilih saluran untuk informasi selengkapnya.
HistogramOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Properti output saja.
Array output.

Pemilih saluran

Enumeration Deskripsi
D2D1_CHANNEL_SELECTOR_R Efek menghasilkan output histogram berdasarkan saluran merah.
D2D1_CHANNEL_SELECTOR_G Efek menghasilkan output histogram berdasarkan saluran hijau.
D2D1_CHANNEL_SELECTOR_B Efek menghasilkan output histogram berdasarkan saluran biru.
D2D1_CHANNEL_SELECTOR_A Efek menghasilkan output histogram berdasarkan saluran alfa.

Output data

Efek ini menghasilkan FLOAT[], dengan jumlah elemen yang sesuai dengan jumlah bin yang ditentukan. Setiap elemen dalam FLOAT[] adalah float. Nilai elemen sesuai dengan jumlah elemen dalam bin tersebut.

Keterangan

Catatan

Metode CreateEffect gagal jika perangkat tidak mendukung DirectCompute dan mengembalikan HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Semua kartu DirectX11 dan kartu DirectX10 yang mendukung DirectCompute dapat menggunakan efeknya.

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