Compartir a través de


ID2D1Factory::CreateTransformedGeometry(ID2D1Geometry*,constD2D1_MATRIX_3X2_F*,ID2D1TransformedGeometry**) (d2d1.h)

Transforma la geometría especificada y almacena el resultado como un objeto ID2D1TransformedGeometry .

Sintaxis

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

Parámetros

sourceGeometry

Tipo: [in] ID2D1Geometry*

Geometría que se va a transformar.

transform

Tipo: [in] const D2D1_MATRIX_3X2_F*

Transformación que se va a aplicar.

transformedGeometry

Tipo: [out] ID2D1TransformedGeometry**

Cuando este método vuelve, contiene la dirección del puntero al nuevo objeto geometry transformado. La geometría transformada almacena el resultado de transformar sourceGeometry por transformación.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error HRESULT .

Comentarios

Al igual que otros recursos, una geometría transformada hereda el espacio de recursos y la directiva de subprocesos del generador que lo creó. Este objeto es inmutable.

Al hacer una pulsación de una geometría transformada con el método DrawGeometry , el ancho del trazo no se ve afectado por la transformación aplicada a la geometría. El ancho del trazo solo se ve afectado por la transformación del mundo.

Ejemplos

En el ejemplo siguiente se crea un ID2D1RectangleGeometry y, a continuación, se dibuja sin transformarlo. Genera la salida que se muestra en la ilustración siguiente.

Ilustración de un rectángulo
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

En el ejemplo siguiente se usa el destino de representación para escalar la geometría por un factor de 3 y, a continuación, se dibuja. En la ilustración siguiente se muestra el resultado de dibujar el rectángulo sin la transformación y con la transformación; observa que el trazo es más grueso después de la transformación, aunque el grosor del trazo sea 1.

Ilustración de un rectángulo más pequeño dentro de un rectángulo más grande con un trazo más grueso
// 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);

En el ejemplo siguiente se usa el método CreateTransformedGeometry para escalar la geometría por un factor de 3 y, a continuación, se dibuja. Genera la salida que se muestra en la ilustración siguiente. Observe que, aunque el rectángulo es mayor, su trazo no ha aumentado.

Ilustración de un rectángulo más pequeño dentro de un rectángulo mayor con el mismo trazo
 // 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);

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d2d1.h
Library D2d1.lib
Archivo DLL D2d1.dll

Consulte también

ID2D1Factory

ID2D1TransformedGeometry