Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能摆脱这些';尖峰&x27;使用WPF绘制时的视觉瑕疵?_Wpf_Drawing_Visual Artifacts - Fatal编程技术网

我怎样才能摆脱这些';尖峰&x27;使用WPF绘制时的视觉瑕疵?

我怎样才能摆脱这些';尖峰&x27;使用WPF绘制时的视觉瑕疵?,wpf,drawing,visual-artifacts,Wpf,Drawing,Visual Artifacts,我正在为地图应用程序绘制一些平铺(小正方形图像) 我正在使用WPF在这些瓷砖上绘制形状 我有一个地理空间坐标列表,这些坐标构成了绘制的多边形 构成这些多边形的地理空间坐标将转换为像素坐标 瓷砖是在各种设置的详细级别上创建的 在大多数细节层次上,图纸都很精细;但在一定程度上,视觉伪影以尖峰或线条的形式出现 这里有一个例子,这些图像有三个不同的细节层次,一个显示问题,两个显示问题未发生的两侧 此图像是最高细节级别,可以: 此图像处于中等细节级别,显示尖峰(85号公路沿线的尖峰最容易发现): 此图

我正在为地图应用程序绘制一些平铺(小正方形图像)

我正在使用WPF在这些瓷砖上绘制形状

我有一个地理空间坐标列表,这些坐标构成了绘制的多边形

构成这些多边形的地理空间坐标将转换为像素坐标

瓷砖是在各种设置的详细级别上创建的

在大多数细节层次上,图纸都很精细;但在一定程度上,视觉伪影以尖峰或线条的形式出现

这里有一个例子,这些图像有三个不同的细节层次,一个显示问题,两个显示问题未发生的两侧

此图像是最高细节级别,可以:

此图像处于中等细节级别,显示尖峰(85号公路沿线的尖峰最容易发现):

此图像处于最低细节级别,并且正常:

当多边形中的两条线彼此靠近和/或形成密集点(会聚)时,会出现尖峰

我们已经检查了源数据,但这些工件并不存在(事实上,它在大多数情况下都正确地呈现了这一点也证实了这一点)

下一个疑点是坐标转换过程,但我们再次检查了它,生成的点不应该以这种方式绘制

这使得WPF成为罪魁祸首,这让我们陷入了困境,因为我们无法简单地用自己的代码解决任何问题

你们以前见过这种事吗

修复将是非常棒的;)


目前看来,我们要么忍受这个问题,要么改用Direct2D。由于GDI+渲染在一个进程中是单线程的,我们已经不再使用它。

解决方案是将笔对象上的LineJoin属性更改为“Round”


非常感谢Moozhe在评论中提供了这个答案。

绘图代码是什么样子的?使用DrawingContext?我们能看到一些代码吗?试着使用正在使用的画笔的MiterLimit属性,或者将画笔的LineJoin属性更改为Round。嗨,Moozhe。这就解决了!你能留下这个作为答案吗,这样我就可以接受了?@AndyJ既然Moozhe已经超过15天没有添加他的补丁作为答案了,你最好自己添加答案,把它标记为已回答。如果你不知道,我会的,只是为了保持无人应答的队列干净。