次の方法で共有


ID2D1Geometry::Outline メソッド

ジオメトリのアウトラインを計算し、 結果を ID2D1SimplifiedGeometrySink に書き込みます。

オーバーロードの一覧

メソッド 説明
Outline(D2D1_MATRIX_3X2_F,ID2D1SimplifiedGeometrySink&*) ジオメトリのアウトラインを計算し、 結果を ID2D1SimplifiedGeometrySink に書き込みます。
Outline(D2D1_MATRIX_3X2_F*,ID2D1SimplifiedGeometrySink*) ジオメトリのアウトラインを計算し、 結果を ID2D1SimplifiedGeometrySink に書き込みます。
Outline(D2D1_MATRIX_3X2_F,FLOAT,ID2D1SimplifiedGeometrySink&*) ジオメトリのアウトラインを計算し、 結果を ID2D1SimplifiedGeometrySink に書き込みます。
Outline(D2D1_MATRIX_3X2_F*,FLOAT,ID2D1SimplifiedGeometrySink*) ジオメトリのアウトラインを計算し、 結果を ID2D1SimplifiedGeometrySink に書き込みます。

注釈

Outline メソッドを使用すると、呼び出し元は、次の追加プロパティを使用して、入力ジオメトリと同等の塗りつぶしを持つジオメトリを生成できます。

  • 出力ジオメトリには横断交差は含まれない。つまり、セグメントは触れることがありますが、交差することはありません。
  • 出力ジオメトリの最も外側の図形はすべて反時計回りに配置されます。
  • 出力ジオメトリは、フィル モードのインバリアントです。つまり、ジオメトリの塗りつぶしは塗りつぶしモードの選択に依存しません。 フィル モードの詳細については、「 D2D1_FILL_MODE」を参照してください。

さらに、 Outline メソッドは、複雑なジオメトリを簡略化するために、これらのジオメトリの冗長な部分を削除する場合に役立ちます。 ID2D1GeometryGroup と組み合わせて、複数のジオメトリ間で和集合を同時に作成する場合にも役立ちます。

次のコードは 、Outline を使用して、自己交差のない同等のジオメトリを構築する方法を示しています。 既定のフラット化許容値が使用されるため、非常に小さいジオメトリでは使用しないでください。

HRESULT D2DOutline(
    ID2D1Geometry *pGeometry,
    ID2D1Geometry **ppGeometry
    )
{
    HRESULT hr;
    ID2D1Factory *pFactory = NULL;
    pGeometry->GetFactory(&pFactory);

    ID2D1PathGeometry *pPathGeometry = NULL;
    hr = pFactory->CreatePathGeometry(&pPathGeometry);

    if (SUCCEEDED(hr))
    {
        ID2D1GeometrySink *pSink = NULL;
        hr = pPathGeometry->Open(&pSink);

        if (SUCCEEDED(hr))
        {
            hr = pGeometry->Outline(NULL, pSink);

            if (SUCCEEDED(hr))
            {
                hr = pSink->Close();

                if (SUCCEEDED(hr))
                {
                    *ppGeometry = pPathGeometry;
                    (*ppGeometry)->AddRef();
                }
            }
            pSink->Release();
        }
        pPathGeometry->Release();
    }

    pFactory->Release();

    return hr;
}

要件

要件
ライブラリ
D2d1.lib
[DLL]
D2d1.dll

こちらもご覧ください

Id2d1geometry