Given a System.Windows.Media.Geometry
类实例,有没有一种简单的方法可以将其转换为轮廓和点列表?例如,我怎样才能简单地将其分解为一个列表LineSegments
用于自定义渲染。
FormattedText formattedText = new FormattedText( "Hello", ...);
Geometry textGeometry = formattedText.BuildGeometry(new System.Windows.Point(0, 0));
如何列出每个轮廓(其中 O 是内/外圆)以及每个轮廓上的每个点?
根据下面的答案;
var flatten = textGeometry.GetFlattenedPathGeometry();
PathFigureCollection pfc = flatten.Figures;
foreach (PathFigure pf in pfc)
{
foreach (PathSegment ps in pf.Segments)
{
if (ps is LineSegment)
On the Geometry
类,你可以使用GetFlattenedPathGeometry()
, GetOutlinedPathGeometry()
(或相关 - 决定你真正想要什么)获得PathGeometry
然后查询Figures
获取数字列表。这些中的每一个PathFigure
对象具有线段(可能是线段、贝塞尔曲线等)。
请注意,在执行此操作时,如果您天真地这样做,您可能会丢失一些信息 - 如果可以给出任意任意几何图形,您可能需要做的不仅仅是调用 FlattenedPathGeometry 才能不丢失填充信息等信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)