Эффект гистограммы
Используйте эффект гистограммы, чтобы создать гистограмму для входной растровой карты на основе указанного числа ячеек.
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 |
Указывает канал, используемый для создания гистограммы. Этот эффект имеет один результат данных, соответствующий указанному каналу. Дополнительные сведения см. в селекторов каналов. |
ГистограммаOutput D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT |
FLOAT[] Только выходное свойство. |
Выходной массив. |
Селекторы каналов
Перечисление | Описание |
---|---|
D2D1_CHANNEL_SELECTOR_R | Эффект создает выходные данные гистограммы на основе красного канала. |
D2D1_CHANNEL_SELECTOR_G | Эффект создает выходные данные гистограммы на основе зеленого канала. |
D2D1_CHANNEL_SELECTOR_B | Эффект создает выходные данные гистограммы на основе синего канала. |
D2D1_CHANNEL_SELECTOR_A | Эффект создает выходные данные гистограммы на основе альфа-канала. |
Выходные данные
Этот эффект выводит 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 |