嗨,我有一条来自 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);
}
}
}
}
< 编辑图像 >
这是从几何图形中减去矩形和椭圆的原始路径。
这是从代码重新创建的样子。
如果我使用原始的 GetFlatnedPathGeometry,它看起来像原始的,但我需要将点缩放到新的分辨率。
希望这能让它更清楚。