给定一个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)
最佳答案 在Geometry类中,您可以使用GetFlattenedPathGeometry(),GetOutlinedPathGeometry()(或相关 – 决定您真正想要的)来获取PathGeometry,然后查询数字以获取数字列表.这些PathFigure对象中的每一个都具有段(可以是线段,贝塞尔等).
请注意,在执行此操作时,如果您天真地执行此操作,可能会丢失一些信息 – 如果可以给出任何任意几何,您可能需要做的不仅仅是调用FlattenedPathGeometry而不会丢失填充信息等内容.