有谁知道在得到像素的WPF几何长度的有效途径? 我知道,基于矢量的,因此也没有真正有一个pixellength在WPF的几何形状。 但它必须是基于可能在可见的绘制图像上获得的长度。 我的意思是,如果我在1024x800像素图像绘制一些几何它有可能得到这些的长度。
我错在这里或在那里获得这些信息的任何可能的和有效的方式?
先感谢您!
迈克尔
有谁知道在得到像素的WPF几何长度的有效途径? 我知道,基于矢量的,因此也没有真正有一个pixellength在WPF的几何形状。 但它必须是基于可能在可见的绘制图像上获得的长度。 我的意思是,如果我在1024x800像素图像绘制一些几何它有可能得到这些的长度。
我错在这里或在那里获得这些信息的任何可能的和有效的方式?
先感谢您!
迈克尔
我想出了一个解决方案,但不知道这是否会是这样做的最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));
}
var geometry = new EllipseGeometry(new Point(50,50), 45, 20);
var length = geometry.Bounds.Width; //or geometry.Bounds.Height
注: EllipseGeometry
仅仅是一个例子。 从派生的所有类Geometry
有Bounds
性质。