1

我有一些地图控件,当我点击它时,我打开 contextMenuStrip,然后点击我的地图快照。问题是当我单击快照时,它是包含 contextMenuStrip的快照图。我尝试使用“contextMenuStrip.Close()”但不起作用。

//on map click event
private void map1_Click(MouseEventArgs e)
{
   System.Drawing.Point point = new System.Drawing.Point(e.X, e.Y + 160);
   contextMenu.Show(this.contextMenu, point);
}


//item of contextMenu
private void contextMenuConvert_Click(object sender, EventArgs e)
{
   contextMenu.Close();
   map.CreateImage(ImageFormat.Jpeg);
}

示例图片。

4

2 回答 2

2

那只是发送一条排队的消息。如果您想确保它实际上已完成,请在 Close 调用和 CreateImage 调用之间使用 Application.DoEvents() 。

于 2011-07-26T22:50:05.633 回答
0

与其尝试拍摄屏幕快照(我假设您正在这样做),您可以向地图对象添加代码,使其能够将自己呈现为屏幕外图像吗?这样,调用者就可以将该图像保存到文件中,或者对其进行任何其他操作。您将能够重用几乎所有当前的渲染代码,只需稍作调整即可支持离屏渲染的想法。

于 2011-07-26T22:51:48.993 回答