GdiPlus:来自GraphicPath的区域而不填充它

时间:2017-12-27 16:47:10

标签: c++ winapi visual-c++ gdi+ graphicspath

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

平局比单词更好,所以这就是我想做的事情:

What I want to do

  1. 我有一个椭圆,比我想要显示未填充(有一个已知的线宽)
  2. 我有一个完整的矩形,我希望它能从椭圆中取代它。
  3. 然后,我想得到椭圆形,未填充,带有减去的部分
  4. 所以,这是我的代码:

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

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

    What I get

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

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

    很难看到像这样的简单事情无法完成。

    或许我错过了什么!

    感谢您的帮助,祝您度过愉快的一天。

    亚历。

0 个答案:

没有答案