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.
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.
// 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.
// 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 |