長條圖效果

使用長條圖效果,根據指定的間隔數目產生輸入點陣圖的長條圖。

此效果的 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));

效果屬性

以下是產生輸出的方程式。

產生長條圖效果輸出的方程式。

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
指定用來產生長條圖的通道。 此效果具有對應至指定通道的單一資料輸出。 如需詳細資訊 ,請參閱通道選取器
HistogramOutput
D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT
FLOAT[]
僅限輸出屬性。
輸出陣列。

通道選取器

列舉型別 描述
D2D1_CHANNEL_SELECTOR_R 效果會根據紅色通道產生長條圖輸出。
D2D1_CHANNEL_SELECTOR_G 效果會根據綠色通道產生長條圖輸出。
D2D1_CHANNEL_SELECTOR_B 效果會根據藍色通道產生長條圖輸出。
D2D1_CHANNEL_SELECTOR_A 效果會根據 Alpha 色板產生長條圖輸出。

資料輸出

此效果會輸出 FLOAT[],其中包含對應至指定間隔數目的專案數。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