0

我正在尝试编写一个 WPF 应用程序来在画布上呈现 shapefile,而不使用任何 GIS SDK。直到渲染成功完成。在尝试应用缩放变换时,我发现画布上的所有形状在放大时都会变大。对于点特征(在画布上显示为椭圆形状)和 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 是一个变换组,它有两个孩子,一个是 scaletransform,另一个是 translatetransform。

我在这个网站上找到了一篇文章(Prevent WPF TextBlock from expand text due to LayoutTransform),描述了如何防止文本块扩展。该解决方案说将逆变换绑定到文本块。这里我的文本块是动态创建的。所以请告诉我如何将逆变换动态绑定到文本块。

4

1 回答 1

0

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

于 2013-01-16T06:26:54.377 回答