Поделиться через


Эффект "Атлас"

Этот эффект можно использовать для вывода части изображения, но сохранить область за пределами части для использования в последующих операциях.

CLSID для этого эффекта CLSID_D2D1Atlas.

Эффект атласа полезен, если требуется загрузить большое изображение, состоящее из множества небольших изображений, таких как различные кадры спрайта.

Чтобы создать результат, выполните следующие действия:

  1. Обрезает входные данные для заданного свойства InputRect .
  2. Преобразует источник результата в (0,0).

Примечание

Свойство InputPaddingRect должно быть больше, только если пиксели между двумя прямоугольниками являются прозрачными черными на входе. Это может привести к более оптимальному выполнению графа в Direct2D.

Ниже приведен пример эффекта. Это изображение небольшое и простое в целях иллюстрации.

входное изображение.

Предыдущее изображение является входным элементом для эффекта. Код здесь создает эффект атласа, задает входные данные, задает входной прямоугольник, а затем рисует выходные данные.

ComPtr<ID2D1Effect> atlasEffect;

// Create the Atlas Effect.
DX::ThrowIfFailed(m_d2dContext->CreateEffect(CLSID_D2D1Atlas, &atlasEffect));

// Set the input.
atlasEffect->SetInputEffect(0, inputImage.Get());

// The images here are 150 x 150 pixels.
float size = 150.0f;

// Compensate for the padding between images.
float padding = 10.0f;

// The input rectangle.  150 x 150 pixels with 10 pixel padding
D2D1_Vector_4F inputRect = D2D1::Vector4F(size + (padding * 2), padding, size, size);

DX::ThrowIfFailed(atlasEffect->SetValue(D2D1_ATLAS_PROP_INPUT_RECT, inputRect));

// Draw the image
m_d2dContext->DrawImage(atlasEffect.Get());

В приведенном выше коде выбирается прямоугольник, который находится вокруг второго треугольника. Заполнение вокруг нее игнорируется. Вот результирующее изображение.

выходное изображение.

Примечание

Это ситуация, когда вы можете указать InputPaddingRect , так как заполнение является прозрачным черным. Прямоугольник будет иметь значение D2D1::Vector4F(size + (padding * 2), 0, size + padding, size + padding);.

Свойства эффекта

Отображаемое перечисление имен и индексов Описание
InputRect
D2D1_ATLAS_PROP_INPUT_RECT
Часть изображения, переданная следующему эффекту.
Тип D2D1_VECTOR_4F.
Значение по умолчанию — (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).
InputPaddingRect
D2D1_ATLAS_PROP_INPUT_PADDING_RECT
Максимальный размер выборки для выходного прямоугольника.
Тип D2D1_VECTOR_4F.
Значение по умолчанию — (-FLT_MAX, -FLT_MAX, FLT_MAX, FLT_MAX).

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальная версия сервера Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Заголовок d2d1effects.h
Библиотека d2d1.lib, dxguid.lib

ID2D1Effect