Bagikan melalui


ID2D1PathGeometry::Metode buka (d2d1.h)

Mengambil sink geometri yang digunakan untuk mengisi geometri jalur dengan angka dan segmen.

Sintaks

HRESULT Open(
  [out] ID2D1GeometrySink **geometrySink
);

Parameter

[out] geometrySink

Jenis: ID2D1GeometrySink**

Ketika metode ini kembali, geometrySink berisi alamat penunjuk ke sink geometri yang digunakan untuk mengisi geometri jalur dengan gambar dan segmen. Parameter ini diteruskan tanpa diinisialisasi.

Mengembalikan nilai

Jenis: HRESULT

Jika metode ini berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Karena geometri jalur tidak dapat diubah dan hanya dapat diisi sekali, itu adalah kesalahan untuk memanggil Buka pada geometri jalur lebih dari sekali.

Perhatikan bahwa mode isian default ke D2D1_FILL_MODE_ALTERNATE. Untuk mengatur mode isian, panggil SetFillMode sebelum panggilan pertama ke BeginFigure. Kegagalan untuk melakukannya akan menempatkan sink geometri dalam status kesalahan.

Contoh

Contoh berikut membuat ID2D1PathGeometry, mengambil sink, dan menggunakan sink untuk menentukan bentuk hourglass. Untuk contoh lengkapnya, lihat Cara Menggambar dan Mengisi Bentuk Kompleks.

ID2D1GeometrySink *pSink = NULL;


// Create a path geometry.
if (SUCCEEDED(hr))
{
    hr = m_pD2DFactory->CreatePathGeometry(&m_pPathGeometry);

    if (SUCCEEDED(hr))
    {
        // Write to the path geometry using the geometry sink.
        hr = m_pPathGeometry->Open(&pSink);

        if (SUCCEEDED(hr))
        {
            pSink->BeginFigure(
                D2D1::Point2F(0, 0),
                D2D1_FIGURE_BEGIN_FILLED
                );

            pSink->AddLine(D2D1::Point2F(200, 0));

            pSink->AddBezier(
                D2D1::BezierSegment(
                    D2D1::Point2F(150, 50),
                    D2D1::Point2F(150, 150),
                    D2D1::Point2F(200, 200))
                );

            pSink->AddLine(D2D1::Point2F(0, 200));

            pSink->AddBezier(
                D2D1::BezierSegment(
                    D2D1::Point2F(50, 150),
                    D2D1::Point2F(50, 50),
                    D2D1::Point2F(0, 0))
                );

            pSink->EndFigure(D2D1_FIGURE_END_CLOSED);

            hr = pSink->Close();
        }
        SafeRelease(&pSink);
    }
}

Persyaratan

   
Klien minimum yang didukung Windows 7, Windows Vista dengan SP2 dan Pembaruan Platform untuk Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 R2, Windows Server 2008 dengan SP2 dan Pembaruan Platform untuk Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header d2d1.h
Pustaka D2d1.lib
DLL D2d1.dll

Lihat juga

ID2D1PathGeometry