次の方法で共有


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

参照

ID2D1Factory

ID2D1Factory