有谁知道以像素为单位获取 WPF 几何体长度的有效方法?我知道 WPF 中的几何图形是基于矢量的,因此实际上没有像素长度。但是必须有可能根据可见的绘制图像获得长度。我的意思是,如果我在 1024x800 像素的图像中绘制一些几何图形,则必须能够获得这些几何图形的长度。
我在这里错了还是有任何可能且有效的方法来获取这些信息?
先感谢您!
迈克尔
有谁知道以像素为单位获取 WPF 几何体长度的有效方法?我知道 WPF 中的几何图形是基于矢量的,因此实际上没有像素长度。但是必须有可能根据可见的绘制图像获得长度。我的意思是,如果我在 1024x800 像素的图像中绘制一些几何图形,则必须能够获得这些几何图形的长度。
我在这里错了还是有任何可能且有效的方法来获取这些信息?
先感谢您!
迈克尔
我想出了一个解决方案,但不知道这是否是最有效(最快)的方法。请留下您的评论 - 谢谢大家!
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));
}
var geometry = new EllipseGeometry(new Point(50,50), 45, 20);
var length = geometry.Bounds.Width; //or geometry.Bounds.Height
注意:EllipseGeometry
只是一个例子。所有派生自的类Geometry
都有一个Bounds
属性。