Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте эффект источника растрового изображения для создания ID2D1Image из источника IWICBitmapSource для использования в качестве входных данных в графе эффектов. Этот эффект выполняет масштабирование и вращение процессора. Он также может опционально генерировать MIP-карту системной памяти, которая может быть оптимизацией производительности для активного масштабирования очень больших изображений с различными уменьшенными разрешениями.
Замечание
Исходный эффект растрового изображения принимает свои входные данные как свойство, а не как входные данные изображения. Необходимо использовать метод SetValue , а не метод SetInput . Свойство WicBitmapSource — это место, где вы указываете входные данные изображения.
CLSID для этого эффекта равен CLSID_D2D1BitmapSource.
- свойства эффекта
- режимы интерполяции
- ориентация
- альфа-режимы
- Замечания
- Требования
- Связанные статьи
Свойства эффекта
| Отображаемое имя и список индексов | Описание |
|---|---|
| WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
IWICBitmapSource, содержащий данные изображения, которые необходимо загрузить. Тип — IWICBitmapSource. Значение по умолчанию — NULL. |
| Шкала D2D1_BITMAPSOURCE_PROP_SCALE |
Величина шкалы по осям X и Y. В результате ширина умножается на значение X, а высота — на значение Y. Это свойство представляет собой D2D1_VECTOR_2F, определенный как: (Масштаб X, Масштаб Y). Масштабируемые суммы имеют значение FLOAT, unitless и должны быть положительными или 0. Тип D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
| Режим интерполяции. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
Режим интерполяции, используемый для масштабирования изображения. Дополнительные сведения см. в режимах интерполяции. Если режим отключает MIPMAP, то BitmapSource кэширует изображение с разрешением, определенным свойствами 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. |
| Альфа-режим 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. Режимы интерполяции, используемые этим эффектом, рассчитываются центральным процессором, а не графическим процессором.
| Имя | Описание |
|---|---|
| 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 | Использует интерполяцию 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 бит на канал), вам следует использовать формат пикселей на основе 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 |