直方圖效果
使用直方圖效果,根據指定的量化數目產生輸入位圖的直方圖。
這個效果的 CLSID 是CLSID_D2D1Histogram。
例
以前 |
---|
在效果之前 ![]() |
直方圖輸出數據的圖表 |
在轉換之後 ![]() |
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));
效果屬性
以下是產生輸出的方程式。
i 會從 0 評估為 bin 數目。效果會針對介於 0 到 1 之間的圖元值產生直方圖。 超出此範圍的值會限制為範圍。 特定貯體的範圍取決於貯體數目。 這個效果適用於直線位圖圖元。 輸入位圖的色彩色板會除以 Alpha 色板來計算此效果。
顯示名稱和索引列舉 | 類型和預設值 | 描述 |
---|---|---|
NumBins D2D1_HISTOGRAM_PROP_NUM_BINS |
UINT32 256 |
指定直方圖所使用的量化數目。 落在特定貯體中的強度值範圍取決於指定的貯體數目。 |
ChannelSelect D2D1_HISTOGRAM_PROP_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_R |
指定用來產生直方圖的通道。 這個效果具有對應至指定通道的單一數據輸出。 如需詳細資訊,請參閱 通道選取器。 |
直方圖輸出 D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] 僅輸出屬性。 |
輸出陣列。 |
通道選取器
列舉 | 描述 |
---|---|
D2D1_CHANNEL_SELECTOR_R | 效果會根據紅色通道產生直方圖輸出。 |
D2D1_CHANNEL_SELECTOR_G | 效果會根據綠色通道產生直方圖輸出。 |
D2D1_CHANNEL_SELECTOR_B | 效果會根據藍色通道產生直方圖輸出。 |
D2D1_CHANNEL_SELECTOR_A | 效果會根據 Alpha 色板產生直方圖輸出。 |
數據輸出
這個效果會輸出 FLOAT[],其中包含對應至指定 bin 數目的項目數。FLOAT[] 中的每個元素都是 float。 元素的值會對應至該 bin 中的項目數目。
言論
注意
如果裝置不支援 DirectCompute 並傳回 HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES,CreateEffect 方法會失敗。 所有支援 DirectCompute 的 DirectX11 卡片和 DirectX10 卡片都可以使用效果。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁眉 | d2d1effects.h |
圖書館 | d2d1.lib、dxguid.lib |