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


Интерфейс ID2D1TransformedGeometry (d2d1.h)

Представляет преобразованную геометрию.

Наследование

Интерфейс ID2D1TransformedGeometry наследуется от ID2D1Geometry. ID2D1TransformedGeometry также имеет следующие типы элементов:

Методы

Интерфейс ID2D1TransformedGeometry содержит следующие методы.

 
ID2D1TransformedGeometry::GetSourceGeometry

Извлекает исходную геометрию этого преобразованного объекта geometry.
ID2D1TransformedGeometry::GetTransform

Извлекает матрицу, используемую для преобразования исходной геометрии объекта ID2D1TransformedGeometry.

Комментарии

Использование ID2D1TransformedGeometry вместо преобразования геометрии с помощью преобразования целевого объекта отрисовки позволяет преобразовать геометрию без преобразования ее росчерка.

Создание объектов ID2D1TransformedGeometry

Чтобы создать ID2D1TransformedGeometry, вызовите метод ID2D1Factory::CreateTransformedGeometry .

Геометрические объекты Direct2D — это неизменяемые и независимые от устройств ресурсы, созданные ID2D1Factory. Как правило, геометрические объекты следует создавать один раз и хранить в течение жизненного цикла приложения или до тех пор, пока их не потребуется изменить. Дополнительные сведения о независимых от устройства и зависимых от устройства ресурсах см. в разделе Общие сведения о ресурсах.

Примеры

В следующем примере создается id2D1RectangleGeometry, а затем он рисуется без преобразования. Он создает выходные данные, показанные на следующем рисунке.

Иллюстрация прямоугольника
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

В следующем примере используется целевой объект отрисовки для масштабирования геометрии в 3 раз, а затем рисуется. На следующем рисунке показан результат рисования прямоугольника без преобразования и с преобразованием . замечает, что штрих толще после преобразования, даже если толщина штриха составляет 1.

Иллюстрация меньшего прямоугольника внутри большего прямоугольника с более толстым росчерком
// Transform the render target, then draw the rectangle geometry again.
m_pRenderTarget->SetTransform(
    D2D1::Matrix3x2F::Scale(
        D2D1::SizeF(3.f, 3.f),
        D2D1::Point2F(175.f, 175.f))
    );

m_pRenderTarget->DrawGeometry(m_pRectangleGeometry, m_pBlackBrush, 1);

В следующем примере используется метод CreateTransformedGeometry для масштабирования геометрического объекта в 3 раз, а затем выполняется его рисование. Он создает выходные данные, показанные на следующем рисунке. Обратите внимание, что хотя прямоугольник больше, его росчерк не увеличился.

Иллюстрация меньшего прямоугольника внутри большего прямоугольника с тем же росчерком
 // Create a geometry that is a scaled version
 // of m_pRectangleGeometry.
 // The new geometry is scaled by a factory of 3
 // from the center of the geometry, (35, 35).

 hr = m_pD2DFactory->CreateTransformedGeometry(
     m_pRectangleGeometry,
     D2D1::Matrix3x2F::Scale(
         D2D1::SizeF(3.f, 3.f),
         D2D1::Point2F(175.f, 175.f)),
     &m_pTransformedGeometry
     );

// Replace the previous render target transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

// Draw the transformed geometry.
m_pRenderTarget->DrawGeometry(m_pTransformedGeometry, m_pBlackBrush, 1);

Требования

Требование Значение
Минимальная версия клиента Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновлением платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d2d1.h

См. также раздел

ID2D1Geometry