Методы ID2D1Geometry::Outline
Вычисляет структуру геометрии и записывает результат в идентификатор ID2D1SimplifiedGeometrySink.
Список перегрузки
Метод | Description |
---|---|
Структура(D2D1_MATRIX_3X2_F&;ID2D1SimplifiedGeometrySink*) | Вычисляет структуру геометрии и записывает результат в идентификатор ID2D1SimplifiedGeometrySink. |
Структура(D2D1_MATRIX_3X2_F*,ID2D1SimplifiedGeometrySink*) | Вычисляет структуру геометрии и записывает результат в идентификатор ID2D1SimplifiedGeometrySink. |
Структура(D2D1_MATRIX_3X2_F&;FLOAT,ID2D1SimplifiedGeometrySink*) | Вычисляет структуру геометрии и записывает результат в идентификатор ID2D1SimplifiedGeometrySink. |
Структура(D2D1_MATRIX_3X2_F*,FLOAT,ID2D1SimplifiedGeometrySink*) | Вычисляет структуру геометрии и записывает результат в идентификатор ID2D1SimplifiedGeometrySink. |
Замечания
Метод Outline позволяет вызывающему объекту создавать геометрию с эквивалентной заливкой входной геометрии со следующими дополнительными свойствами:
- Геометрия выходных данных не содержит поперечных пересечений; то есть сегменты могут касаться, но они никогда не пересекаются.
- Наиболее внешние фигуры в геометрии выходных данных — это все ориентированные счетчики со стрелкой.
- Выходная геометрия — инвариантный режим заполнения; То есть заливка геометрии не зависит от выбора режима заполнения. Дополнительные сведения о режиме заполнения см. в D2D1_FILL_MODE.
Кроме того, метод Outline может быть полезен при удалении избыточных частей указанных геометрий для упрощения сложных геометрий. Это также может быть полезно в сочетании с ID2D1GeometryGroup для создания союзов между несколькими геометриями одновременно.
Примеры
В следующем коде показано, как использовать структуру для создания эквивалентной геометрии без самостоятельного пересечения. Он использует допустимое значение по умолчанию, поэтому не следует использовать с очень небольшими геометриями.
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;
}
Requirements
Требование | Значение |
---|---|
Библиотека |
|
DLL-библиотеки |
|