所以表格上有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>
答案 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”来做您想做的事情。