У меня есть приложение с 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.