我正在尝试编写一个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是一个变换组,它有两个孩子,一个是标度变换,另一个是平移变换。
我在这个网站(Prevent WPF TextBlock from expanding text due to LayoutTransform)上找到了一篇文章,描述了如何防止文本块扩展。解决方案是将反变换绑定到文本块。这里我的文本块是动态创建的。所以请告诉我如何将反变换动态绑定到文本块。
发布于 2013-01-16 14:26:54
我已经在WPF中完成了完全相同的工作,没有使用任何API。对于点要素,可以将点的Transform特性设置为TranslateTransform (可能包含在viewTransform中),这样在平移地图时,所有点要素都会随着其他要素的移动而正确移动。但是在缩放的情况下,我清除了所有的点和文本块,并在给定viewTransform的情况下重新计算它们的坐标。
https://stackoverflow.com/questions/13814630
复制相似问题