Эффект преобразования 2D
Эффект аффинного преобразования 2D применяет пространственное преобразование к изображению на основе матрицы 3X2 с помощью матрицы Direct2D преобразования и любого из шести режимов интерполяции. Этот эффект можно использовать для поворота, масштабирования, перекоса или перевода изображения. Кроме того, эти операции можно объединить. Аффинные передачи сохраняют параллельные линии и соотношение расстояний между тремя точками на изображении.
CLSID для этого эффекта CLSID_D2D12DAffineTransform.
- пример изображения
- свойства эффекта
- режимы границы
- режимы интерполяции
- растровое изображение вывода
- требования
- связанные разделы
Пример изображения
Перед |
---|
![]() |
После |
![]() |
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInput(0, bitmap);
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f, 0.1f, 0.9f, 8.0f, 45.0f);
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();
Этот эффект выполняет эту матричную операцию:
Хотя входная матрица определена как матрица 3x2, последний столбец заполняется 0, 0 и 1 для создания квадратной матрицы. Это позволяет умножать матрицу, чтобы преобразования можно было объединить в одну матрицу.
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
ИнтерполяцияMode D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE |
Режим интерполяции, используемый для масштабирования изображения. Существует 6 режимов масштабирования, которые отличаются качеством и скоростью. Тип D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE. Значение по умолчанию — D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE |
Режим, используемый для вычисления границы изображения, мягкого или жесткого. Дополнительные сведения см. в режимах границ. Тип D2D1_BORDER_MODE. Значение по умолчанию — D2D1_BORDER_MODE_SOFT. |
ПреобразованиеMatrix D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX |
Матрица 3x2 для преобразования изображения с помощью матрицы Direct2D преобразования. Тип D2D1_MATRIX_3X2_F. Значением по умолчанию является Matrix3x2F::Identity(). |
Резкость D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS |
В режиме высококачественной интерполяции кубической интерполяции уровень резкости фильтра масштабирования в диапазоне от 0 до 1. Значения являются безудельными. Вы можете использовать резкость для настройки качества изображения при масштабировании изображения. Коэффициент резкости влияет на форму ядра. Чем выше коэффициент резкости, тем меньше ядро. Примечание. это свойство влияет только на режим интерполяции с высоким качеством. Тип FLOAT. Значение по умолчанию — 0.0f. |
Режимы границ
Имя | Описание |
---|---|
D2D1_BORDER_MODE_SOFT | Эффект заполняет изображение прозрачными черными пикселями по мере интерполяции, что приводит к мягкому краю. |
D2D1_BORDER_MODE_HARD | Эффект зажимает выходные данные к размеру входного изображения. |
Режимы интерполяции
Перечисление | Описание |
---|---|
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Примеры ближайшей единой точки и используют ее. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. В этом режиме используется больше времени обработки, чем в ближайшем соседнем режиме, но выводится более качественный образ. |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных выборки в одном пикселе для хорошего анти-псевдонима края. Этот режим подходит для масштабирования на небольшие объемы на изображениях с несколькими пикселями. |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | Использует размер переменной с высоким качеством кубическом ядре для предварительного масштабирования изображения, если уменьшение масштаба участвует в матрице преобразования. Затем используется режим интерполяции кубов для конечных выходных данных. |
Заметка
Если режим не выбран, эффект по умолчанию D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.
Заметка
Анисотропный режим создает mip-карты при масштабировании, однако если при масштабировании свойство кэшированного кэшированного задано значение true для эффектов, входных в этот эффект, mipmaps не будет создаваться каждый раз для достаточно небольших изображений.
Выходной растровый рисунок
Размер выходного растрового изображения зависит от матрицы преобразования, применяемой к изображению.
Эффект выполняет операцию преобразования, а затем применяет ограничивающий прямоугольник вокруг результата. Выходной растровый рисунок — это размер ограничивающего прямоугольника.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |