Эффект гистограммы
Используйте эффект гистограммы для создания гистограммы для входного растрового изображения на основе указанного количества ячеек.
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 до количества ячеек. Эффект создает гистограмму для значений пикселей от 0 до 1. Значения за пределами этого диапазона закружаются в диапазоне. Диапазон конкретного контейнера зависит от количества контейнеров. Этот эффект работает с прямыми пикселями растрового изображения. Цветовые каналы входного растрового изображения разделяются на альфа-канал для вычисления этого эффекта.
Отображаемое перечисление имен и индексов | Тип и значение по умолчанию | Описание |
---|---|---|
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 | Эффект создает выходные данные гистограммы на основе альфа-канала. |
Выходные данные
Этот эффект выводит значение FLOAT[] с числом элементов, соответствующим числу указанных ячеек. Каждый элемент в float[] является float. Значение элемента соответствует количеству элементов в этой ячейке.
Комментарии
Примечание
Метод CreateEffect завершается ошибкой , если устройство не поддерживает DirectCompute и возвращает HRESULT = D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES. Все карты DirectX11 и карты DirectX10, поддерживающие DirectCompute, могут использовать эффект.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |