1

所以表格上有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,因为还有其他对象,如光标、对话框等)。是否有任何解决方法可以在没有这些对象的情况下实现打印?

PSGmap.Net.CoreGmap.Net.WindowFormsverison是1.7.0.0,.Net Framework版本是4.0,我不能升级.Net Framework版本,因为有些客户端使用的是Windows XP。

4

2 回答 2

4

问题已通过使用临时图像解决。

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();
于 2014-07-14T11:52:02.453 回答
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”做你想做的事。

于 2019-04-17T17:53:52.440 回答