Эффект масштабирования
Используйте этот эффект для масштабирования изображения вверх или вниз. Эффект имеет шесть режимов масштабирования: ближайший сосед, линейный, кубический, много пример линейный, анисотропный и высококачественный куб.
CLSID для этого эффекта CLSID_D2D1Scale.
- пример изображения
- свойства эффекта
- режимы интерполяции
- растровое изображение вывода
- требования
- связанные разделы
Пример изображения
В этом примере показан эффект масштабирования в 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, unitless и должны быть положительными или 0. Тип D2D1_VECTOR_2F. Значение по умолчанию — {1.0f, 1.0f}. |
CenterPoint D2D1_SCALE_PROP_CENTER_POINT |
Точка центра масштабирования изображения. Это свойство определяется как D2D1_VECTOR_2F (точка X, точка Y). Единицы находятся в dips. Используйте свойство центра для масштабирования вокруг точки, отличной от левого верхнего угла. Тип 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-карты при масштабировании, однако если при масштабировании свойство кэшированного кэшированного задано значение true для эффектов, входных в этот эффект, mipmaps не будет создаваться каждый раз для достаточно небольших изображений.
Выходной растровый рисунок
Расположение и размер выходной растровой карты зависит от указанного коэффициента масштабирования и центральной точки.
Вы можете вычислить размер выходной растровой карты с помощью следующего уравнения:
- BitmapSizex(Пиксели)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(пиксели)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)
Эффект округляет доли пикселей до ближайшего целого пикселя.
Расположение растрового изображения — (0, 0) или значение свойства центра точки.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |