Эффект преобразования трехмерного преобразования
Используйте эффект преобразования трехмерного изображения для применения произвольной матрицы преобразования 4x4 к изображению.
Этот эффект применяет матрицу (M?) к угловым вершинам исходного изображения ([ x y z 1 ]) с помощью этого вычисления:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
CLSID для этого эффекта CLSID_D2D13DTransform.
- пример изображения
- свойства эффекта
- класс матрицы преобразования 4x4
- требования
- связанные разделы
Пример изображения
Перед |
---|
![]() |
После |
![]() |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
ИнтерполяцияMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Режим интерполяции, который используется на изображении. Существует 5 режимов масштабирования, которые отличаются качеством и скоростью. Тип D2D1_3DTRANSFORM_INTERPOLATION_MODE. Значение по умолчанию — D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
Режим, используемый для вычисления границы изображения, мягкого или жесткого. Дополнительные сведения см. в режимах границ. Тип D2D1_BORDER_MODE. Значение по умолчанию — D2D1_BORDER_MODE_SOFT. |
ПреобразованиеMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Матрица преобразования 4x4, примененная к плоскости проекции. Следующее вычисление матрицы используется для сопоставления точек из одной трехмерной системы координат с преобразованной системой координат 2D. ![]()
Mx,y = Элементы матрицы преобразования X, Y, Z =Выходные координаты плоскости проекции Отдельные элементы матрицы не привязаны и не являются модульными. Тип D2D1_MATRIX_4X4_F. Значением по умолчанию является Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1). |
Режимы интерполяции
Перечисление | Описание |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Примеры ближайшей единой точки и используют ее. В этом режиме используется меньше времени обработки, но выводится изображение с наименьшим качеством. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Использует четырехточечный образец и линейную интерполяцию. В этом режиме используется больше времени обработки, чем в ближайшем соседнем режиме, но выводится более качественный образ. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | Использует 16 примеров кубового ядра для интерполяции. В этом режиме используется максимальное время обработки, но выводится более качественный образ. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейных выборки в одном пикселе для хорошего анти-псевдонима края. Этот режим подходит для масштабирования на небольшие объемы на изображениях с несколькими пикселями. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Использует анисотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
Заметка
Если режим не выбран, эффект по умолчанию используется для D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
Заметка
Анисотропный режим создает mip-карты при масштабировании, однако если при масштабировании свойство кэшированного кэшированного задано значение true для эффектов, входных в этот эффект, mipmaps не будет создаваться каждый раз для достаточно небольших изображений.
Режимы границ
Имя | Описание |
---|---|
D2D1_BORDER_MODE_SOFT | Эффект заполняет изображение прозрачными черными пикселями по мере интерполяции, что приводит к мягкому краю. |
D2D1_BORDER_MODE_HARD | Эффект зажимает выходные данные к размеру входного изображения. |
Класс матрицы преобразования 4x4
Direct2D предоставляет класс матрицы 4x4 для предоставления вспомогательных функций для преобразования изображения в 3 измерения. Дополнительные сведения см. в разделе Matrix4x4F и описание всех членов класса.
Функция | Описание | Матрица |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Создает матрицу преобразования, которая масштабирует плоскость проекции в направлении X, Y и/или Z. | матрицы масштабирования |
SkewX(X) | Создает матрицу преобразования, которая изменяет плоскость проекции в направлении X. |
![]() |
Скос(Y) | Создает матрицу преобразования, которая изменяет плоскость проекции в направлении Y. |
![]() |
Перевод(X, Y, Z) | Создает матрицу преобразования, которая преобразует плоскость проекции в направлении X, Y или Z. |
![]() |
RotationX(X) | Создает матрицу преобразования, которая поворачивает плоскость проекции по оси X. |
![]() |
Поворот(Y) | Создает матрицу преобразования, которая вращает плоскость проекции о оси Y. |
![]() |
RotationZ(Z) | Создает матрицу преобразования, которая вращает плоскость проекции о оси Z. |
![]() |
PerspectiveProjection(D) | Преобразование перспективы с значением глубины D. |
![]() |
RotationArbitraryAxis(X, Y, Z, градусы) | Поворот плоскости проекции о указанной оси. |
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |