МЕТОД ID2D1Factory::CreateTransformedGeometry(ID2D1Geometry*,constD2D1_MATRIX_3X2_F*,ID2D1TransformedGeometry**) (d2d1.h)

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

Синтаксис

HRESULT CreateTransformedGeometry(
  ID2D1Geometry            *sourceGeometry,
  const D2D1_MATRIX_3X2_F  *transform,
  ID2D1TransformedGeometry **transformedGeometry
);

Параметры

sourceGeometry

Тип: [in] ID2D1Geometry*

Преобразуемая геометрия.

transform

Тип: [in] const D2D1_MATRIX_3X2_F*

Применяемая трансформация.

transformedGeometry

Тип: [out] ID2D1TransformedGeometry**

При возврате этого метода содержит адрес указателя на новый преобразованный объект geometry. Преобразованная геометрия хранит результат преобразования sourceGeometry путем преобразования.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Как и другие ресурсы, преобразованная геометрия наследует пространство ресурсов и политику потоков фабрики, которая ее создала. Этот объект неизменяем.

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

Примеры

В следующем примере создается 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
Header d2d1.h
Библиотека D2d1.lib
DLL D2d1.dll

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

ID2D1Factory

ID2D1TransformedGeometry