【发布时间】:2013-09-16 08:55:24
【问题描述】:
您好,我有一条来自 GetFlattenedPathGeometry 的路径,我可以在其中遍历图形和线段以获取要添加到 PointCollection 的点。
然后我将每个 point.x/y 乘以一个比例因子,以获得原始路径数据的完整比例版本。 (不使用 scaletransform,因为它不符合我的要求)。
如果我使用类似的东西:
public static PathGeometry GetPathGeometry(PointCollection polygonCorners)
{
List<PathSegment> pathSegments = new List<PathSegment> { new PolyLineSegment(polygonCorners, true) };
PathGeometry pathGeometry = new PathGeometry();
pathGeometry.Figures.Add(new PathFigure(polygonCorners[0], pathSegments, true));
return pathGeometry;
}
它返回一个新的路径几何,但不处理具有排除路径几何的椭圆,因为路径只是一条连续线。
有没有办法将 PointCollection 转换为 Path.Data(例如:使用“M”“L”等)以便我重新使用 Geometry.Parse(新字符串)?
这是我用来获取 flattenedgeometry 点集合的代码:
PathGeometry g = path.Data.GetFlattenedPathGeometry();
foreach (var f in g.Figures)
{
foreach (var s in f.Segments)
{
if (s is PolyLineSegment)
{
foreach (var pt in ((PolyLineSegment) s).Points)
{
strGeom += pt.ToString();
Point ptn = new Point(pt.X * ScaleX, pt.Y * ScaleY);
pcol.Add(ptn);
}
}
}
}
这是从几何图形中减去矩形和椭圆的原始路径。
这是从代码重新创建的样子。
如果我使用原始的 GetFlattenedPathGeometry,它看起来像原始的,但我需要将点缩放到新的分辨率。
希望这会让它更清楚。
【问题讨论】: