Эффект источника растрового изображения
Используйте эффект источника растрового изображения, чтобы создать ID2D1Image из IWICBitmapSource для использования в качестве входных данных в графе эффекта. Этот эффект выполняет масштабирование и поворот ЦП. Он также может при необходимости создать карту MIP системной памяти, которая может быть оптимизацией производительности для активного масштабирования очень больших изображений с различными уменьшенными разрешениями.
Примечание
Исходный эффект растрового изображения принимает входные данные как свойство, а не как входные данные изображения. Необходимо использовать метод SetValue , а не Метод SetInput . Свойство WicBitmapSource указывает входные данные изображения.
CLSID для этого эффекта CLSID_D2D1BitmapSource.
- Свойства эффекта
- Режимы интерполяции
- Ориентация
- Режимы альфа-канала
- Замечания
- Requirements
- Связанные темы
Свойства эффекта
Отображаемое перечисление имен и индексов | Описание |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource, содержащий данные изображения для загрузки. Тип — IWICBitmapSource. Значение по умолчанию — NULL. |
Масштабирование D2D1_BITMAPSOURCE_PROP_SCALE |
Масштаб в направлении X и Y. Эффект умножает ширину на значение X, а высоту — на значение Y. Это свойство является D2D1_VECTOR_2F определяется следующим образом: (шкала X, шкала Y). Масштабируемые значения имеют значение FLOAT, без унитарных значений и должны быть положительными или 0. Тип — D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Режим интерполяции, используемый для масштабирования изображения. Дополнительные сведения см. в разделе Режимы интерполяции . Если режим отключает MIP-карту, bitmapSouce кэширует изображение в разрешении, определенном свойствами Scale и EnableDPICorrection. Тип — D2D1_BITMAPSOURCE_INTERPOLATION_MODE. Значение по умолчанию — D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Если для этого параметра задано значение TRUE, эффект будет масштабировать входное изображение для преобразования DPI, сообщаемого IWICBitmapSource , в DPI контекста устройства. Эффект использует режим интерполяции, заданный с помощью свойства InterpolationMode. Если для этого параметра задано значение FALSE, для выходного изображения будет использоваться DPI 96,0. Тип — BOOL. Значение по умолчанию — FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
Альфа-режим выходных данных. Это может быть как предварительное, так и прямое. Дополнительные сведения см. в разделе Альфа-режимы . Тип — D2D1_BITMAPSOURCE_ALPHA_MODE. Значение по умолчанию — D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Ориентация D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Операция переворачивания и (или) поворота, выполняемая на изображении. Дополнительные сведения см. в разделе Ориентация . Тип — D2D1_BITMAPSOURCE_ORIENTATION. Значение по умолчанию — D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Режимы интерполяции
Эффект интерполирует этот режим при масштабировании изображения или при исправлении DPI. Режимы интерполяции, которые использует этот эффект, вычисляются ЦП, а не GPU.
Имя | Описание |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Выборка ближайшей единственной точки и ее использование. Не создает MIP-карту. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Использует выборку из четырех точек и линейную интерполяцию. Не создает MIP-карту. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Использует 16 примеров кубического ядра для интерполяции. Не создает MIP-карту. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Использует интерполяцию fant WIC, такую же, как интерфейс IWICBitmapScaler . Не создает MIP-карту. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Создает цепочку MIP-карты в системной памяти с помощью билинейной интерполяции. Для каждой MIP-карты эффект масштабируется до ближайшего кратного 0,5 с помощью билинеарной интерполяции, а затем масштабирует оставшееся количество с помощью линейной интерполяции. |
Ориентация
Свойство Orientation можно использовать для применения флага ориентации EXIF, внедренного в изображение.
Имя | Описание |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | По умолчанию. Эффект не изменяет ориентацию входных данных. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Переворачивает изображение по горизонтали. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Поворачивает изображение по часовой стрелке на 180 градусов. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Поворачивает изображение по часовой стрелке на 180 градусов и поворачивает его по горизонтали. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Поворачивает изображение по часовой стрелке на 270 градусов и переворачивает его по горизонтали. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Поворачивает изображение по часовой стрелке на 90 градусов. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Поворачивает изображение по часовой стрелке на 90 градусов и поворачивает его по горизонтали. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Поворачивает изображение по часовой стрелке на 270 градусов. |
В этом фрагменте кода показано, как преобразовать значения ориентации EXIF (определенные в propkey.h) в D2D1_BITMAPSOURCE_ORIENTATION значения.
#include <propkey.h>
#include <d2d1effects.h>
D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
switch (PhotoOrientation)
{
case PHOTO_ORIENTATION_NORMAL:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
case PHOTO_ORIENTATION_FLIPHORIZONTAL:
return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE180:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
case PHOTO_ORIENTATION_FLIPVERTICAL:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_TRANSPOSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE270:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
case PHOTO_ORIENTATION_TRANSVERSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE90:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
default:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
}
}
Режимы альфа-канала
Имя | Описание |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | В выходных данных эффекта используется предварительно подготовленный альфа-канал. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | В выходных данных эффекта используется прямой альфа-канал. |
Комментарии
Чтобы оптимизировать производительность при совместном использовании WIC и Direct2D , следует использовать IWICFormatConverter для преобразования в соответствующий формат пикселей на основе сценария приложения и собственной точности изображения.
В большинстве случаев для конвейера Direct2D приложения требуется только 8 бит на канал (bpc) точности, или изображение обеспечивает точность 8 бит/с, поэтому следует преобразовать в GUID_WICPixelFormat32bppPBGRA. Однако если вы хотите воспользоваться преимуществами дополнительной точности, предоставляемой изображением (например, JPEG-XR или TIFF с точностью более 8 bpc), следует использовать формат пикселей на основе RGBA. Дополнительные сведения см. в таблице ниже.
Требуемая точность | Собственная точность изображения | Рекомендуемый формат пикселей |
---|---|---|
8 бит на канал | <= 8 бит на канал | GUID_WICPixelFormat32bppPBGRA |
Как можно более высокий | <= 8 бит на канал | GUID_WICPixelFormat32bppPBGRA |
Как можно более высокий | > 8 бит на канал | Порядок каналов RGBA, предварительно замедленный альфа-канал |
Так как многие форматы изображений поддерживают несколько уровней точности, следует использовать IWICBitmapSource::GetPixelFormat для получения собственного формата пикселей изображения, а затем использовать IWICPixelFormatInfo , чтобы определить, сколько битов на канал точности доступно для этого формата. Кроме того, обратите внимание, что не все оборудование поддерживает форматы пикселей высокой точности. В таких случаях приложению может потребоваться вернуться к устройству WARP для поддержки высокой точности.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |