在wpf应用程序中像GIS软件一样应用转换

在wpf应用程序中像GIS软件一样应用转换,wpf,transform,gis,shapes,Wpf,Transform,Gis,Shapes,我正在尝试编写一个WPF应用程序,在画布上呈现shapefile,而不使用任何GIS SDK。直到渲染成功完成。在尝试应用缩放变换时,我发现画布上的所有形状在放大时都会变大。对于点特征(在画布上显示为椭圆形状)和文本块,大小应保持不变,只是位置应相对改变。请指导我如何达到这个要求 对于点功能,我的代码如下所示: private Geometry CreateEllipseGeometry(double size, Point centerPoint) { EllipseG

我正在尝试编写一个WPF应用程序,在画布上呈现shapefile,而不使用任何GIS SDK。直到渲染成功完成。在尝试应用缩放变换时,我发现画布上的所有形状在放大时都会变大。对于点特征(在画布上显示为椭圆形状)和文本块,大小应保持不变,只是位置应相对改变。请指导我如何达到这个要求

对于点功能,我的代码如下所示:

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是一个转换组,它有两个子项,一个子项是scaletransform,另一个子项是translatetransform

我在这个网站()上找到了一篇文章,介绍了如何防止textblock扩展。解决方案是将逆变换绑定到文本块。
这里我的文本块是动态创建的。因此,请告诉我如何将逆变换动态绑定到文本块。

我已经在WPF中完成了确切的工作,没有使用任何API。对于点要素,可以将点的Transform属性设置为TranslateTransform(可能包含在viewTransform中),以便在平移地图时,所有点要素都能正确移动,而其他要素也能正确移动。但是在缩放的情况下,我会清除所有的点和文本块,并在给定viewTransform的情况下重新计算它们的坐标。

当画布上有大量的点特征和文本块可用时,这种方法肯定会提高性能。你在那个方向做过什么吗?是的,我做过几百到几千个几何体(点、线、多边形),没关系。