获取几何长度(Getting Geometry length)

2019-09-17 17:35发布

有谁知道在得到像素的WPF几何长度的有效途径? 我知道,基于矢量的,因此也没有真正有一个pixellength在WPF的几何形状。 但它必须是基于可能在可见的绘制图像上获得的长度。 我的意思是,如果我在1024x800像素图像绘制一些几何它有可能得到这些的长度。

我错在这里或在那里获得这些信息的任何可能的和有效的方式?

先感谢您!

迈克尔

Answer 1:

我想出了一个解决方案,但不知道这是否会是这样做的最efficent(最快)的方法。 请您在此留下评论 - 谢谢大家!

    public static double GetLength(this Geometry geo)
    {
        PathGeometry path = geo.GetFlattenedPathGeometry();

        double length = 0.0;

        foreach (PathFigure pf in path.Figures)
        {
            Point start = pf.StartPoint;

            foreach (PolyLineSegment seg in pf.Segments)
            {
                foreach (Point point in seg.Points)
                {
                    length += Distance(start, point);
                    start = point;
                }
            }
        }

        return length;
    }

    private static double Distance(Point p1, Point p2)
    {
        return Math.Sqrt(Math.Pow(p1.X - p2.X,2) + Math.Pow(p1.Y - p2.Y,2));
    }


Answer 2:

var geometry = new EllipseGeometry(new Point(50,50), 45, 20);
var length = geometry.Bounds.Width; //or geometry.Bounds.Height

注: EllipseGeometry仅仅是一个例子。 从派生的所有类GeometryBounds性质。



文章来源: Getting Geometry length