如何打印GMap.NET地图?

时间:2014-07-12 10:54:50

标签: c# .net printing .net-4.0 gmap.net

所以表格上有GMapControl。我想打印地图,这里是代码

PrintDocument doc = new PrintDocument { DocumentName = "Map printing file" };
doc.PrintPage += DocOnPrintPage;
PrintDialog dialog = new PrintDialog { Document = doc };
DialogResult result = dialog.ShowDialog();
if (result == DialogResult.OK) doc.Print();

private void DocOnPrintPage(object sender, PrintPageEventArgs e)
{
    var img = View.gmap.ToImage();
    System.Drawing.Point loc = new System.Drawing.Point(0, 0);
    e.Graphics.DrawImage(img, loc);
}

我使用ToImage()方法,但它不能正常工作(它就像PrintScreen,因为还有其他对象,如光标,对话框等)是否有任何解决方法可以实现打印没有这个对象?

P.S。 Gmap.Net.Core和Gmap.Net.WindowForms verison是1.7.0.0,而.Net Framework版本是4.0,我无法升级.Net Framework版本,因为有些客户端使用的是Windows XP。

< / p>

2 个答案:

答案 0 :(得分:3)

使用临时图像解决了问题。

string path = Path.GetTempPath() + Path.GetRandomFileName() + @".png";
_tmpImage = View.gmap.ToImage();
if (_tmpImage == null) return;
_tmpImage.Save(path);

PrintDocument doc = new PrintDocument { DocumentName = "Map printing file" };
doc.PrintPage += DocOnPrintPage;
PrintDialog dialog = new PrintDialog { Document = doc };
DialogResult result = dialog.ShowDialog();
if (result == DialogResult.OK) doc.Print();

答案 1 :(得分:0)

假设您有一个名为“ MyMap”的GMap.NET.WindowsForms.GMapControl,然后使用此方法:

Dim ThisMap As New Bitmap(MyMap.Width, MyMap.Height)
MyMap.DrawToBitmap(ThisMap, New Rectangle(0, 0, SavImg.Width, SavImg.Height))

然后,您可以使用“ ThisMap”来做您想做的事情。