Efek histogram
Gunakan efek histogram untuk menghasilkan histogram untuk bitmap input berdasarkan jumlah bin yang ditentukan.
CLSID untuk efek ini CLSID_D2D1Histogram.
Contoh
Sebelum |
---|
![]() |
Grafik data output histogram |
![]() |
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.
i dievaluasi dari 0 hingga jumlah bin. Efek ini 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 oleh 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. |
SaluranPilih 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
Enumerasi | Deskripsi |
---|---|
D2D1_CHANNEL_SELECTOR_R | Efek menghasilkan output histogram berdasarkan saluran merah. |
D2D1_CHANNEL_SELECTOR_G | Efeknya menghasilkan output histogram berdasarkan saluran hijau. |
D2D1_CHANNEL_SELECTOR_B | Efeknya 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.
Komentar
Nota
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
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 |