Aracılığıyla paylaş


Histogram efekti

Belirtilen bölme sayısına göre giriş bit eşlemi için histogram oluşturmak için histogram efektini kullanın.

Bu etki için CLSID CLSID_D2D1Histogram.

Örnek

Önce
Efektin önüne görüntüyü .
Histogram çıktı verilerinin grafiği
Dönüştürmeden sonra görüntüyü .
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));

Efekt özellikleri

Çıktıyı oluşturmak için denklem aşağıdadır.

Histogram efektinin çıkışını oluşturmak için denklemi .

i 0'dan bölme sayısına kadar değerlendirilir. Bu etki, 0 ile 1 arasındaki piksel değerleri için bir histogram oluşturur. Bu aralığın dışındaki değerler aralığa sıkıştırılır. Belirli bir demetin aralığı, demet sayısına bağlıdır. Bu efekt düz bit eşlem piksellerinde çalışır. Bu etkiyi hesaplamak için giriş bit eşleminin renk kanalları alfa kanalına bölünür.

Görünen ad ve dizin numaralandırması Tür ve varsayılan değer Açıklama
NumBins
D2D1_HISTOGRAM_PROP_NUM_BINS
UINT32
256
Histogram için kullanılan bölme sayısını belirtir. Belirli bir demete düşen yoğunluk değerleri aralığı, belirtilen demetlerin sayısına bağlıdır.
ChannelSelect
D2D1_HISTOGRAM_PROP_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_R
Histogramı oluşturmak için kullanılan kanalı belirtir. Bu etki, belirtilen kanala karşılık gelen tek bir veri çıkışına sahiptir. Daha fazla bilgi için bkz. Kanal seçicileri.
HistogramOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
Yalnızca output özelliği.
Çıkış dizisi.

Kanal seçicileri

Sayım Açıklama
D2D1_CHANNEL_SELECTOR_R Etki, kırmızı kanala göre histogram çıkışını oluşturur.
D2D1_CHANNEL_SELECTOR_G Bu etki, yeşil kanala göre histogram çıkışını oluşturur.
D2D1_CHANNEL_SELECTOR_B Bu etki, mavi kanalı temel alan histogram çıkışını oluşturur.
D2D1_CHANNEL_SELECTOR_A Etki, alfa kanalını temel alan histogram çıkışını oluşturur.

Veri çıkışı

Bu efekt, belirtilen bölme sayısına karşılık gelen öğe sayısıyla birlikte float[] çıkışını verir. FLOAT[] içindeki her öğe bir float'dır. öğesinin değeri, bu bölmedeki öğelerin sayısına karşılık gelir.

Açıklamalar

Not

Cihaz DirectCompute'u desteklemez ve HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES döndürürse CreateEffect yöntemi başarısız olur. DirectCompute'ı destekleyen tüm DirectX11 kartları ve DirectX10 kartları efekti kullanabilir.

Gereksinim -leri

Gereksinim Değer
Desteklenen en düşük istemci Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Desteklenen en düşük sunucu Windows 7 için Windows 8 ve Platform Güncelleştirmesi [masaüstü uygulamaları | Windows Mağazası uygulamaları]
Üstbilgi d2d1effects.h
Kütüphane d2d1.lib, dxguid.lib

ID2D1Fefek