ID2D1Geometry::Outline 方法

计算几何图形的轮廓,并将结果写入 ID2D1SimplifiedGeometrySink

重载列表

方法 说明
大纲 (D2D1_MATRIX_3X2_F&,ID2D1SimplifiedGeometrySink*) 计算几何图形的轮廓,并将结果写入 ID2D1SimplifiedGeometrySink
大纲 (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