ID2D1Factory::CreateTransformedGeometry オーバーロードされたメソッド
指定されたジオメトリを変換し、その結果を ID2D1TransformedGeometry オブジェクトとして格納します。
オーバーロードの一覧
メソッド | 説明 |
---|---|
CreateTransformedGeometry(ID2D1Geometry*,D2D_MATRIX_3X2_F*,ID2D1TransformedGeometry**) | 指定されたジオメトリを変換し、その結果を ID2D1TransformedGeometry オブジェクトとして格納します。 |
CreateTransformedGeometry(ID2D1Geometry*,D2D_MATRIX_3X2_F&,ID2D1TransformedGeometry**) | 指定されたジオメトリを変換し、その結果を ID2D1TransformedGeometry オブジェクトとして格納します。 |
解説
他のリソースと同様に、変換後のジオメトリはそのオブジェクトを作成したファクトリのリソース領域とスレッド ポリシーを継承します。このオブジェクトは不変です。
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);
要件
ライブラリ |
D2d1.lib |
DLL |
D2d1.dll |