Compartilhar via


Método ID2D1PathGeometry::Open (d2d1.h)

Recupera o coletor de geometria usado para popular a geometria do caminho com figuras e segmentos.

Sintaxe

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

Parâmetros

[out] geometrySink

Tipo: ID2D1GeometrySink**

Quando esse método retorna, geometrySink contém o endereço de um ponteiro para o coletor de geometria que é usado para preencher a geometria do caminho com figuras e segmentos. Este parâmetro é passado não inicializado.

Valor retornado

Tipo: HRESULT

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT .

Comentários

Como as geometrias de caminho são imutáveis e só podem ser preenchidas uma vez, é um erro chamar Abrir em uma geometria de caminho mais de uma vez.

Observe que o modo de preenchimento usa como padrão D2D1_FILL_MODE_ALTERNATE. Para definir o modo de preenchimento, chame SetFillMode antes da primeira chamada para BeginFigure. A falha ao fazer isso colocará o coletor de geometria em um estado de erro.

Exemplos

O exemplo a seguir cria um ID2D1PathGeometry, recupera um coletor e usa o coletor para definir uma forma de ampulheta. Para obter o exemplo completo, consulte Como desenhar e preencher uma forma complexa.

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

Requisitos

   
Cliente mínimo com suporte Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d2d1.h
Biblioteca D2d1.lib
DLL D2d1.dll

Confira também

ID2D1PathGeometry