Эффект преобразования трехмерной перспективы
Используйте эффект преобразования трехмерной перспективы для поворота изображения в 3 измерениях, как будто просматривается с расстояния.
Преобразование трехмерной перспективы удобнее, чем эффект трехмерного преобразования, но предоставляет только подмножество функциональных возможностей. Вы можете вычислить полную трехмерную матрицу преобразования и применить более произвольный матрицу преобразования к изображению с помощью эффекта трехмерного преобразования.
CLSID для этого эффекта CLSID_D2D13DPerspectiveTransform.
- пример изображения
- свойства эффекта
- режимы интерполяции
- режимы границы
- растровое изображение вывода
- требования
- связанные разделы
Пример изображения
Перед |
---|
![]() |
После |
![]() |
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);
perspectiveTransformEffect->SetInput(0, bitmap);
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
ИнтерполяцияMode D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE |
Режим интерполяции, который используется на изображении. Существует 5 режимов масштабирования, которые отличаются качеством и скоростью. Тип D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. Значение по умолчанию — D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE |
Режим, используемый для вычисления границы изображения, мягкого или жесткого. Дополнительные сведения см. в режимах границ. Тип D2D1_BORDER_MODE. Значение по умолчанию — D2D1_BORDER_MODE_SOFT. |
Глубина D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Расстояние от PerspectiveOrigin до плоскости проекции. Значение, указанное в DIPs и должно быть больше 0. Тип FLOAT. Значение по умолчанию — 1000,0f. |
PerspectiveOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
Расположение зрителя X и Y в трехмерной сцене. Это свойство определяется как D2D1_VECTOR_2F (точка X, точка Y). Единицы находятся в dips. Значение Z задается свойством Depth. Тип D2D1_VECTOR_2F. Значение по умолчанию — {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Преобразование эффекта выполняется перед поворотом плоскости проекции. Это свойство является D2D1_VECTOR_3F, определенное следующим образом: (X, Y, Z). Единицы находятся в dips. Тип D2D1_VECTOR_3F. Значение по умолчанию — {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Преобразование эффекта выполняется после поворота плоскости проекции. Это свойство является D2D1_VECTOR_3F, определенное следующим образом: (X, Y, Z). Единицы находятся в dips. Тип D2D1_VECTOR_3F. Значение по умолчанию — {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
Центральная точка поворота, выполняемая эффектом. Это свойство является D2D1_VECTOR_3F, определенное следующим образом: (X, Y, Z). Единицы находятся в dips. Тип D2D1_VECTOR_3F. Значение по умолчанию — {0.0f, 0.0f, 0.0f}. |
Вращение D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Угол поворота для каждой оси. Это свойство является D2D1_VECTOR_3F, определенное следующим образом: (X, Y, Z). Единицы находятся в градусах. Тип D2D1_VECTOR_3F. Значение по умолчанию — {0.0f, 0.0f, 0.0f}. |
Режимы интерполяции
Перечисление | Описание |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Примеры ближайшей единой точки и используют ее. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. В этом режиме используется больше времени обработки, чем в ближайшем соседнем режиме, но выводится более качественный образ. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных выборки в одном пикселе для хорошего анти-псевдонима края. Этот режим подходит для масштабирования на небольшие объемы на изображениях с несколькими пикселями. |
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
Заметка
Если вы не выбираете режим, то эффект по умолчанию D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
Заметка
Анисотропный режим создает mip-карты при масштабировании, однако если при масштабировании свойство кэшированного кэшированного задано значение true для эффектов, входных в этот эффект, mipmaps не будет создаваться каждый раз для достаточно небольших изображений.
Режимы границ
Имя | Описание |
---|---|
D2D1_BORDER_MODE_SOFT | Эффект заполняет изображение прозрачными черными пикселями по мере интерполяции, что приводит к мягкому краю. |
D2D1_BORDER_MODE_HARD | Эффект зажимает выходные данные к размеру входного изображения. |
Выходной растровый рисунок
Размер выходного растрового изображения зависит от матрицы преобразования, применяемой к изображению.
Эффект выполняет операцию преобразования, а затем применяет ограничивающий прямоугольник вокруг результата. Выходной растровый рисунок — это размер ограничивающего прямоугольника.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |