長條圖效果
使用長條圖效果,根據指定的間隔數目產生輸入點陣圖的長條圖。
此效果的 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 |