5

ピクセル単位でWPFジオメトリの長さを取得する効率的な方法を知っている人はいますか?WPFのジオメトリはベクトルベースであるため、実際にはピクセル長ではないことを私は知っています。ただし、表示されている描画画像に基づいて長さを取得できる必要があります。つまり、1024x800ピクセルの画像にいくつかのジオメトリを描画する場合、それらの長さを取得できる必要があります。

私はここで間違っていますか、それともこれらの情報を取得するための可能な効率的な方法はありますか?

前もって感謝します!

マイケル

4

2 に答える 2

3

私は解決策を考え出しましたが、これが最も効率的な(最速の)方法であるかどうかはわかりません。これについてコメントを残してください-ありがとうございました!

    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));
    }
于 2012-06-04T13:24:08.977 に答える
0
var geometry = new EllipseGeometry(new Point(50,50), 45, 20);
var length = geometry.Bounds.Width; //or geometry.Bounds.Height

注:EllipseGeometryこれは単なる例です。から派生するすべてのクラスにGeometryBoundsプロパティがあります。

于 2012-06-04T07:32:19.153 に答える