Gmap.Net 保存选定标记周围的图像

Gmap.Net save image around selected marker

我有一个 GMap.Net 显示各种标记的应用程序。我知道如何对当前地图和标记进行屏幕截图:

Dim sImageName As String = DateTime.Now.ToString(Format("yyyyMMdd-HHmmss")) & ".png"
Dim ThisMap As New Bitmap(Form2.myMap.Width, Form2.myMap.Height)
Form2.myMap.DrawToBitmap(ThisMap, New Rectangle(0, 0, Form2.myMap.Width, Form2.myMap.Height))
ThisMap.Save(sImagesFolder & sImageName)

我想做的是为选定的标记创建图像。图像不是显示在屏幕上的整个地图,而是以标记为中心并在每个方向上显示 100 个像素。

有人知道怎么做吗?

这是我尝试过的方法,但它给了我一张空白图像 -- 什么也没有显示。我觉得这应该有效...

Private Sub MyMap_OnMarkerClick(item As GMapMarker, e As Windows.Forms.MouseEventArgs) Handles myMap.OnMarkerClick

  SelMarkerX = e.X
  SelMarkerY = e.Y

  Dim sImageName As String = DateTime.Now.ToString(Format("yyyyMMdd-HHmmss")) & ".png"
  Dim ThisMap As New Bitmap(140,100)
  myMap.DrawToBitmap(ThisMap, New Rectangle(SelMarkerX - 70, SelMarkerY - 50, 140, 100))
  ThisMap.Save(sImagesFolder & sImageName)

End Sub

我只是不明白。如果我写:

myMap.DrawToBitmap(ThisMap, New Rectangle(0, 0, 140, 100)

然后我得到你可能期望的。我将现有地图的左上角水平从 0 到 140,垂直从 0 到 100。如果我将其更改为:

myMap.DrawToBitmap(ThisMap, New Rectangle(10, 0, 140, 100)

然后我得到 0 到 130,而不是 10 到 140。

好吧,我不知道如何用 Gmap 做到这一点,所以我想知道我是否可以在 Gmap 之外裁剪它,显然这很常见。这是我使用的代码。

Dim ThisMap As New Bitmap(Form2.myMap.Width, Form2.myMap.Height) Form2.myMap.DrawToBitmap(ThisMap, 新矩形(0, 0, Form2.myMap.Width, Form2.myMap.Height)) ThisMap.Save(sImagesFolder & sImageName)

    Dim LocX = SelMarkerX - 160 'x cord. of where crop starts
    Dim LocY = SelMarkerY - 120 'y  cord. of where crop starts
    Dim CropW = 320 'Crop width
    Dim CropH = 240 'Crop height
    Dim CropRect As New Rectangle(LocX, LocY, CropW, CropH)

    Dim OriginalImage = ThisMap
    Dim CropImage = New Bitmap(CropRect.Width, CropRect.Height)
    Using grp = Graphics.FromImage(CropImage)
        grp.DrawImage(OriginalImage, New Rectangle(0, 0, CropRect.Width, CropRect.Height), CropRect, GraphicsUnit.Pixel)
        CropImage.Save(sImagesFolder & sImageName)
    End Using