Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
C# 使用GraphicsPath在地图图像上绘制道路_C#_.net_Map_Overlay_Graphicspath - Fatal编程技术网

C# 使用GraphicsPath在地图图像上绘制道路

C# 使用GraphicsPath在地图图像上绘制道路,c#,.net,map,overlay,graphicspath,C#,.net,Map,Overlay,Graphicspath,我有一个应用程序(WinForms C#),它允许用户在从Google Maps获取的位图上画一条线(自由画)来突出显示感兴趣的道路 我正在使用鼠标下/移动/上事件向GraphicsPath对象添加点。这适用于仅由两点表示的直线路段。但是当鼠标长时间按下按钮绘制旋转时,会生成大量的点数据 这不仅效率低下,而且是绘制曲线的笨拙方法(特别是当缩放级别过低时) 问题: 一旦路径完成,我如何通过编程减少点数而不损失精度 是否有更好的方法使用某种形式的几何构造来捕获点信息 减少多边形曲线中点数的常用方法

我有一个应用程序(WinForms C#),它允许用户在从Google Maps获取的位图上画一条线(自由画)来突出显示感兴趣的道路

我正在使用鼠标下/移动/上事件向GraphicsPath对象添加点。这适用于仅由两点表示的直线路段。但是当鼠标长时间按下按钮绘制旋转时,会生成大量的点数据

这不仅效率低下,而且是绘制曲线的笨拙方法(特别是当缩放级别过低时)

问题:

  • 一旦路径完成,我如何通过编程减少点数而不损失精度
  • 是否有更好的方法使用某种形式的几何构造来捕获点信息

减少多边形曲线中点数的常用方法是。它非常适合于减少地图绘图中的点数,例如路线。

请查看减少点数的方法。@Clemens:谢谢。这听起来正是我想要的第一点。根据您的经验,您会让应用程序在绘制点时处理这些点,还是在绘制点后处理一次。考虑到O(n2)的最坏情况复杂性,它不应该是一个计算挑战(我们可能不会有超过1或2000个)。你的想法是什么?我在地图应用程序中使用该算法来减少计算路线中的点数。实际上,我以不断增加的公差多次运行它,直到总点数小于固定限制(例如500)。我在计算完路线后做过一次,即使是非常大的路线,也从未遇到过任何严重的视觉精度损失。如果你愿意,我可以发布我的实现。@Clemens:一个快速的实现,分数从1000降到,顺便说一下,你应该发布这个作为答案。