共用方式為


直方圖效果

使用直方圖效果,根據指定的量化數目產生輸入位圖的直方圖。

這個效果的 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

ID2D1Effect