【问题标题】:How to get Stream/PathGeometry that's outline of geometry 'widened' with Pen stroke in WPF?如何使用 WPF 中的笔画“加宽”几何轮廓的 Stream/PathGeometry?
【发布时间】:2014-05-29 00:19:45
【问题描述】:

这对我来说很难解释,所以我将使用图像作为示例:
我已经定义了一个 StreamGeometry(在代码中)。
当它使用DrawingContext.DrawGeometry 绘制时,同时使用画笔填充和笔来描边,几何图形被笔粗细“加宽”。
现在我正在尝试查找 WPF 中是否有一个函数可以返回这个实体加宽几何体(以任何几何体格式)。

到目前为止,我尝试了Geometry.GetWidenedPathGeometry,但这只会返回“勾勒”边框笔划的几何图形。它在应该填充的地方有一个洞。

我想我可以使用GetWidenedPathGeometry 并与原始几何图形进行某种联合,“填充”这个洞。我只是想确定没有更简单或更更有效(更快)的方法。
如果几何体可以保持 StreamGeometry 也是更可取的,但 GetWidenedPathGeometry 会将其转换为(以某种方式损坏?)PathGeometry。

感谢您的建议

【问题讨论】:

  • 你是对的。您必须将 GetWidenedPathGeometry 的结果与原始结果 combine
  • This 也可能很有帮助。

标签: wpf pathgeometry


【解决方案1】:

GetWidenedPathGeometry 生成的几何图形似乎包含两个图形,一个用于内部轮廓,另一个用于外部轮廓。

如果你去掉了里面的呢?

Charles Petzold Book Blog 也有类似的场景: http://www.charlespetzold.com/blog/2008/04/Rounded-Graphics-in-WPF.html

希望对你有帮助。

伊戈尔。

【讨论】:

  • 嗯,是的,我发现结果包含两个图形,其中一个描述了内部几何形状,可以删除。一个问题是我没有找到任何规范可以确保任何几何形状总是如此。此外,Charles Petzold 的“检测”,其中 Figure 是内部的,恕我直言,非常时髦,可能适用于他的一个特定的简单三角形示例,但我不会依赖于任意形状。简而言之:不,解决方案没有这么简单。
  • 我应该补充一点,我只是通过编写自己的 Trace 函数来解决这个问题。主要是因为 WPF 的 GetWidenedPathGeometry 非常慢,而且是“不可预测的”。虽然这不是解决这个问题的方法,但我通常会推荐。
  • 在我最近遇到的特殊情况下,我使用两个轮廓几何形状的面积来确定内部几何形状(较小的面积)。也许这也可以帮助你..
  • @Riva Care 要分享您的跟踪代码吗?可能对所有人都有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-02
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多