Эффект масштабирования
Используйте этот эффект для увеличения или уменьшения масштаба изображения. Эффект имеет шесть режимов масштабирования: ближайший сосед, линейный, кубический, линейный, анизотропный и высококачественный кубический.
CLSID для этого эффекта CLSID_D2D1Scale.
- Пример изображения
- Свойства эффекта
- Режимы интерполяции
- Выходное растровое изображение
- Requirements
- Связанные темы
Пример изображения
В этом примере показан эффект масштабирования, который в 2 раза увеличивает входные данные и обрезает исходный размер.
До |
---|
После |
ComPtr<ID2D1Effect> scaleEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Scale, &scaleEffect);
scaleEffect->SetInput(0, bitmap);
scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(scaleEffect.Get());
m_d2dContext->EndDraw();
Свойства эффекта
Отображаемое перечисление имен и индексов | Описание |
---|---|
Масштабирование D2D1_SCALE_PROP_SCALE |
Величина масштабирования в направлении X и Y как отношение размера выходных данных к размеру входных данных. Это свойство D2D1_VECTOR_2Fdefined следующим образом: (шкала X, шкала Y). Масштабируемые значения имеют значение FLOAT, без унитарных значений и должны быть положительными или 0. Тип — D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
CenterPoint (Центральная точка) D2D1_SCALE_PROP_CENTER_POINT |
Центральная точка масштабирования изображения. Это свойство является D2D1_VECTOR_2F определяется следующим образом: (точка X, точка Y). Единицы находятся в dip. Используйте свойство центральной точки для масштабирования вокруг точки, отличной от левого верхнего угла. Тип — D2D1_VECTOR_2F. Значение по умолчанию — {0.0f, 0.0f}. |
BorderMode D2D1_SCALE_PROP_BORDER_MODE |
Режим, используемый для вычисления границы изображения, мягкой или жесткой. Дополнительные сведения см. в разделе Режимы границ . Тип — D2D1_BORDER_MODE. Значение по умолчанию — D2D1_BORDER_MODE_SOFT. |
Резкость D2D1_SCALE_PROP_SHARPNESS |
В режиме высококачественной кубической интерполяции уровень резкости фильтра масштабирования в виде поплавка в диапазоне от 0 до 1. Значения являются неунитарными. Резкость можно использовать для настройки качества изображения при уменьшении масштаба. Фактор резкости влияет на форму ядра. Чем выше коэффициент резкости, тем меньше ядро. Примечание: Это свойство влияет только на режим интерполяции куба высокого качества. Тип — FLOAT. Значение по умолчанию — 0,0f. |
ИнтерполяцияMode D2D1_SCALE_PROP_INTERPOLATION_MODE |
Режим интерполяции, который используется эффектом для масштабирования изображения. Существует 6 режимов масштабирования, которые варьируются по качеству и скорости. Дополнительные сведения см. в разделе Режимы интерполяции . Тип — D2D1_SCALE_INTERPOLATION_MODE. Значение по умолчанию — D2D1_SCALE_INTERPOLATION_MODE_LINEAR. |
Режимы границ
Имя | Описание |
---|---|
D2D1_BORDER_MODE_SOFT | Эффект заполняет входное изображение прозрачными черными пикселями для образцов за пределами входных границ, когда применяется ядро свертки. При этом создается мягкое ребро для изображения и в процессе выполняется расширение выходного растрового изображения на размер ядра. |
D2D1_BORDER_MODE_HARD | Эффект расширяет входное изображение с помощью преобразования границы зеркало типа для образцов за пределами входных границ. Размер выходного растрового рисунка равен размеру входного растрового рисунка. |
`
Режимы интерполяции
Перечисление | Описание |
---|---|
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Выборка ближайшей единственной точки и ее использование. Этот режим использует меньше времени обработки, но выводит изображение самого низкого качества. |
D2D1_SCALE_INTERPOLATION_MODE_LINEAR | Использует выборку из четырех точек и линейную интерполяцию. В этом режиме используется больше времени обработки, чем в режиме ближайшего соседа, но выводится изображение более высокого качества. |
D2D1_SCALE_INTERPOLATION_MODE_CUBIC | Использует 16 примеров кубического ядра для интерполяции. Этот режим использует больше всего времени обработки, но выводит изображение более высокого качества. |
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Использует 4 линейные выборки в одном пикселе для правильного сглаживания краев. Этот режим хорошо подходит для уменьшения масштаба на небольшие объемы изображений с несколькими пикселями. |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | Использует анизотропную фильтрацию для выборки шаблона в соответствии с преобразованной формой растрового изображения. |
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | Использует высокое качество кубического ядра переменного размера для предварительного уменьшения масштаба изображения, если уменьшение масштаба участвует в матрице преобразования. Затем использует режим интерполяции куба для окончательного вывода. |
Примечание
Если не выбрать режим, по умолчанию эффект будет D2D1_SCALE_INTERPOLATION_MODE_LINEAR.
Примечание
Анизотропный режим создает MIP-карты при масштабировании, однако если для свойства Cached задано значение true для эффектов, которые являются входными для этого эффекта, MIP-карты не будут создаваться каждый раз для достаточно небольших изображений.
Выходное растровое изображение
Расположение и размер выходного растрового изображения зависит от указанного коэффициента масштабирования и центральной точки.
Размер выходного растрового рисунка можно вычислить с помощью следующего уравнения:
- BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIP)*(UserDPI/96)
Эффект округляет доли пикселей до ближайшего целого пикселя.
Расположение растрового изображения — (0, 0) или значение свойства центральной точки.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальная версия сервера | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |