我目前正在为地图应用程序绘制一些图块(小方形图像)。
我正在使用 WPF 在这些图块上绘制形状。
我有一个地理空间坐标列表,这些坐标组成了绘制的多边形。
构成这些多边形的地理空间坐标被转换为像素坐标。
瓷砖是在不同的细节层次上创建的。
在大多数这些细节层次上,绘图都很好。但在某些级别,视觉伪影以尖峰或线条的形式出现。
这是一个示例,这些图像具有三个不同的细节级别,一个显示问题,两个显示问题没有发生的两侧。
此图像是最高细节级别,还可以:
此图像处于中等细节级别,并显示了尖峰(85 号公路沿线的尖峰最容易发现):
此图像的细节级别最低,还可以:
当多边形中的两条线彼此靠近和/或形成一个密集点(收敛)时,就会出现尖峰。
我们已经检查了源数据并且这些工件不存在(这也可以通过它在大多数时间正确呈现的事实得到证实)。
下一个怀疑是坐标转换过程,但我们再次检查了它,生成的点不应该以这种方式绘制。
这让 WPF 成为罪魁祸首,让我们陷入困境,因为我们不能像使用自己的代码那样简单地解决问题。
你们以前见过这种东西吗?
修复会很棒;)
目前看来,我们要么不得不忍受这个问题,要么改用 Direct2D。我们已经放弃了 GDI+ 渲染,因为它在一个进程中是单线程的。