1

我需要从 GraphicPath 获取 Gdi+ 区域而不填充它,我不知道该怎么做。

平局胜于言语,所以这就是我想做的:

我想做的事

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

问题是我得到的实际上是这样的:

我得到什么

似乎从 GraphicPath 创建一个区域会自动填充该区域。是否可以从仅具有轮廓的 GraphicPath 获取区域?例如,通过给笔或线宽?

我已经阅读了有关 GraphicPath Widen 函数的内容,但它并没有真正做到我想要的。

奇怪的是,像这样简单的事情却做不到。

或者,也许我错过了什么!

感谢您的帮助,祝您有美好的一天。

亚历克斯。

4

0 回答 0