0

GIS SDK を使用せずにキャンバスにシェープファイルをレンダリングする WPF アプリケーションを作成しようとしています。レンダリングまで無事完了。スケール変換を適用しようとしているときに、ズームインするとキャンバス上のすべての形状が大きくなることがわかりました。点フィーチャ (キャンバス上で楕円形として表示) と TextBlocks の場合、サイズは同じままで、位置のみが相対的に変化するはずです。 . この要件を達成する方法を教えてください。

ポイント機能の場合、私のコードは次のとおりです。

private Geometry CreateEllipseGeometry(double size, Point centerPoint)
    {
        EllipseGeometry geom = new EllipseGeometry();

        geom.RadiusX = size;
        geom.RadiusY = size;
        geom.Center = centerPoint;

        geom.Transform = this.viewTransform;

        return geom;
    }

ここで、viewTransform は 2 つの子を持つ変換グループです。1 つは scaletransform で、もう 1 つは translatetransform です。

テキストブロックが拡張されないようにする方法を説明するこのサイトの記事 ( LayoutTransform により WPF TextBlock がテキストを拡張しないようにする ) を見つけました。解決策は、逆変換をテキストブロックにバインドすることを示しています。ここで私のテキストブロックは動的に作成されます。逆変換をテキストブロックに動的にバインドする方法を教えてください。

4

1 に答える 1

0

APIを使用せずにWPFで正確な仕事をしました。ポイント フィーチャの場合、ポイントのTransformプロパティを TranslateTransform (おそらく viewTransform に含まれている) に設定できるため、マップをパンするときに他のフィーチャが移動すると、すべてのポイント フィーチャが正しく移動します。ただし、ズームの場合は、すべてのポイントとテキストブロックをクリアし、viewTransform を指定してそれらの座標を再計算します。

于 2013-01-16T06:26:54.377 に答える