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


Методы ID2D1Factory::CreateTransformedGeometry

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

Список перегрузки

Метод Description
CreateTransformedGeometry(ID2D1Geometry*,D2D_MATRIX_3X2_F*,ID2D1TransformedGeometry**) Преобразует указанную геометрию и сохраняет результат в виде объекта ID2D1TransformedGeometry.
CreateTransformedGeometry(ID2D1Geometry*,D2D_MATRIX_3X2_F&;ID2D1TransformedGeometry**) Преобразует указанную геометрию и сохраняет результат в виде объекта ID2D1TransformedGeometry.

Замечания

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

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

Примеры

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

illustration of a rectangle

hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

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

illustration of a smaller rectangle inside a larger rectangle with a thicker stroke

// 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, а затем рисует его. Он создает выходные данные, показанные на следующем рисунке. Обратите внимание, что, хотя прямоугольник больше, его штрих не увеличился.

illustration of a smaller rectangle inside a larger rectangle with the same stroke

 // 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);

Requirements

Требование Значение
Верхний колонтитул
D2d1.h
Библиотека
D2d1.lib
DLL-библиотеки
D2d1.dll

См. также

ID2D1Factory