МЕТОД 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 |