次の方法で共有


ID2D1TransformedGeometry インターフェイス

変換されたジオメトリを表します。

実装するタイミング

カスタム実装はサポートされません。

メンバー

ID2D1TransformedGeometry インターフェイス の継承元は次のとおりです: ID2D1Geometry. ID2D1TransformedGeometry は次のメンバーも定義します:

  • メソッド

メソッド

ID2D1TransformedGeometry インターフェイス は次の項目を定義します: メソッド.

メソッド 説明
GetSourceGeometry

この変換されたジオメトリ オブジェクトの変換前のジオメトリを取得します。

GetTransform

ID2D1TransformedGeometry オブジェクトのソース ジオメトリを変換するときに使用する行列を取得します。

 

解説

レンダー ターゲットの変換を使用してジオメトリを変換する代わりに ID2D1TransformedGeometry を使用すると、ジオメトリのストロークを変換することなくジオメトリを変換できます。

ID2D1TransformedGeometry オブジェクトの作成

ID2D1TransformedGeometry を作成するには、ID2D1Factory::CreateTransformedGeometry メソッドを呼び出します。

Direct2D ジオメトリは、ID2D1Factory によって作成される、デバイスに依存しない不変のリソースです。通常、一度ジオメトリを作成したら、アプリケーションが有効な間またはジオメトリの変更が必要になるまでは、作成したジオメトリを保持しておく必要があります。デバイス非依存のリソースとデバイス依存のリソースの詳細については、「リソースの概要」を参照してください。

次の例では、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);

要件

クライアントの最小要件

Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム

サーバーの最小要件

Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム

ヘッダー

D2d1.h

ライブラリ

D2d1.lib

DLL

D2d1.dll