Bagikan melalui


ID2D1Geometry::Metode kerangka

Menghitung kerangka geometri dan menulis hasilnya ke ID2D1SimplifiedGeometrySink.

Daftar kelebihan beban

Metode Deskripsi
Kerangka(D2D1_MATRIX_3X2_F&,ID2D1SimplifiedGeometrySink*) Menghitung kerangka geometri dan menulis hasilnya ke ID2D1SimplifiedGeometrySink.
Kerangka(D2D1_MATRIX_3X2_F*,ID2D1SimplifiedGeometrySink*) Menghitung kerangka geometri dan menulis hasilnya ke ID2D1SimplifiedGeometrySink.
Kerangka(D2D1_MATRIX_3X2_F&,FLOAT,ID2D1SimplifiedGeometrySink*) Menghitung kerangka geometri dan menulis hasilnya ke ID2D1SimplifiedGeometrySink.
Kerangka(D2D1_MATRIX_3X2_F*,FLOAT,ID2D1SimplifiedGeometrySink*) Menghitung kerangka geometri dan menulis hasilnya ke ID2D1SimplifiedGeometrySink.

Keterangan

Metode Kerangka memungkinkan pemanggil untuk menghasilkan geometri dengan isi yang setara dengan geometri input, dengan properti tambahan berikut:

  • Geometri output tidak berisi persimpangan melintang; Yaitu, segmen dapat menyentuh, tetapi mereka tidak pernah menyeberang.
  • Angka terluar dalam geometri output semuanya berorientasi berlawanan arah jarang.
  • Geometri output adalah invarian mode isian; artinya, pengisian geometri tidak tergantung pada pilihan mode isian. Untuk informasi selengkapnya tentang mode isian, lihat D2D1_FILL_MODE.

Selain itu, metode Kerangka dapat berguna dalam menghapus bagian geometri yang berlebihan untuk menyederhanakan geometri yang kompleks. Ini juga dapat berguna dalam kombinasi dengan ID2D1GeometryGroup untuk membuat serikat di antara beberapa geometri secara bersamaan.

Contoh

Kode berikut menunjukkan cara menggunakan Kerangka untuk membangun geometri yang setara tanpa persimpangan diri. Ini menggunakan toleransi meratakan default dan karenanya tidak boleh digunakan dengan geometri yang sangat kecil.

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;
}

Persyaratan

Persyaratan Value
Pustaka
D2d1.lib
DLL
D2d1.dll

Baca juga

ID2D1Geometry