GdiPlus: регион из GraphicPath без его заполнения

Мне нужно получить Gdi + Region из GraphicPath, не заполняя его, и я не знаю, как это сделать.

Ничья лучше слов, вот что я хочу сделать:

Что я хочу сделать

  1. У меня есть эллипс, который я хочу отображать незаполненным (с известной шириной линии)
  2. У меня есть полный прямоугольник, и я хочу, чтобы он вычеркнул себя из эллипса.
  3. Затем я хочу получить эллипс, незаполненный, с вычтенной частью

Итак, вот мой код:

// lGraphics and lBrush defined upper...

// Graphic paths
GraphicsPath lGraphicPathEllipse;
GraphicsPath lGraphicPathRectangle;

// Rectangles
Rect lRectEllipse(0, 0, 100, 100);
Rect lRectRectangle(10, -10, 100, 80);

// Add the shapes to the graphic pathes
lGraphicPathEllipse.AddEllipse(lRectEllipse);
lGraphicPathRectangle.AddRectangle(lRectRectangle);

// Create the regions
Region lRegionEllipse(&lGraphicPathEllipse);
Region lRegionRectangle(&lGraphicPathRectangle);

// Exclude the rectangle from the ellipse
lRegionEllipse.Exclude(&lRegionRectangle);

// Draw the ellipse region
lGraphics->FillRegion(&lBrush, &lRegionEllipse);

Проблема в том, что я получаю вот это:

Что я получаю

Похоже, что создание Region из GraphicPath автоматически заполняет регион.
Можно ли получить регион из GraphicPath только с контуром? Например, давая ручку или ширину линии?

Я прочитал кое-что о функции GraphicPath Widen, но она не выполняет то, что я хочу.

Странно видеть, что такая простая вещь не может быть сделана.

Или, может быть, я что-то пропустил!

Спасибо за любую помощь, и хорошего дня.

Алекс.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]