もっと詳しく
Besonders bei der Arbeit mit dem MapControl ist es für die Kunden oft interessant einen Kartenausschnitt, mit zum Beispiel einer aufgezeichneten Tour und ein paar Sammelstellen, als Bilddatei abzuspeichern. Wenn dies nun über die CopyFromScreen Methode derSystem.Drawing.Graphics Klasse gemacht wird, kann es zu unerwünschten Elementen im resultierenden Screenshot kommen. So ist zum Beispiel der Mauszeiger sichtbar oder auch das ToolTip des Buttons über den die Screenshot-Erzeugung angestoßen wurde. Bisher sah das also so aus:
System.Windows.Forms.Control c = this.map;
System.Drawing.Rectangle rect = control.Bounds;
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(rect.Width, rect.Height);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
{
g.CopyFromScreen(c.PointToScreen(c.Location), System.Drawing.Point.Empty, rect.Size);
}
Nun gibt es die Möglichkeit von jedem Windows-Forms Control die aktuelle Darstellung in ein Bitmap zu speichern und zwar mit der Methode DrawToBitmap. Wenn dies nun mit demMapControl gemacht wird, resultiert dies in einem sauberen Screenshot in dem weder der Mauszeiger, noch irgendwelche unerwünschten ToolTips zu sehen sind. Den Code dazu gibt es hier. Es ändert sich eigentlich nur eine Zeile:
System.Windows.Forms.Control c = this.map;
System.Drawing.Rectangle rect = control.Bounds;
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(rect.Width, rect.Height);
c.DrawToBitmap(bitmap, rect);