【发布时间】:2019-02-09 19:35:55
【问题描述】:
现在我正在开发一个 Windows 窗体 C# 应用程序,它使用 dlib (https://github.com/takuya-takeuchi/DlibDotNet) 检测你的脸
它得到了 68 个带有 Points 的人脸地标
因此,我为嘴唇、鼻子、眼睛和眉毛制作了一个图形路径,以及一条环绕整个脸部的路径,我的问题是,是否可以减去眼睛、眉毛、嘴唇和鼻子的路径从覆盖整个面部到绘制所有面部“排除”这些区域?
我发现这在 xaml 中是可能的:
(https://docs.microsoft.com/en-us/visualstudio/designers/draw-shapes-and-paths?view=vs-2017)
那么是否可以在 C# 中使用图形路径和位图来执行 ExcludeOverlap 或 Substract? 如果是的话怎么办?
(我知道发布一些代码几乎是一个潜规则,但我所做的基本上是为面部的每个部分创建一个图形路径,然后使用 Graphics.FillPath() 将它们绘制在位图上)
【问题讨论】:
-
运气好并经过测试,它会自行发生。您需要尝试为路径添加形状、关闭图形并找到正确的缠绕模式。
-
由于我不知道什么是windingmode,所以我猜想可能有答案,我去看看。
-
它是一个 GraphicsPath 属性,用于控制如何填充重叠区域。
-
嗯,可能是这样,谢谢指出
-
嗯,我总是记不住正确的名字:它是GraphicsPath.FillMode - 没有重叠你不需要更改任何东西,只需创建一些路径并将它们添加到带有@的路径987654328@ 重叠时,您可能希望将默认
Alternate更改为Winding..