// http://forums.esri.com/Thread.asp?c=159&f=1707&t=268556
private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{
IRubberBand pRubberPoly = new ESRI.ArcGIS.Display.RubberEnvelopeClass();
IEnvelope myenv = pRubberPoly.TrackNew(this.axMapControl1.ActiveView.ScreenDisplay, null).Envelope ;
double yokoratio;
double tateratio;
int w;
int h;
yokoratio = myenv.Width/this.axMapControl1.ActiveView.Extent.Width;
tateratio = myenv.Height/this.axMapControl1.ActiveView.Extent.Height;
w = (int)(axMapControl1.ClientSize.Width * yokoratio);
h = (int)(axMapControl1.ClientSize.Height * tateratio);
IActiveView activeView = this.axMapControl1.ActiveView;
Bitmap bitmap = new Bitmap(w,h);
Graphics graphics = Graphics.FromImage(bitmap);
ESRI.ArcGIS.Display.tagRECT rect = new ESRI.ArcGIS.Display.tagRECT();
ESRI.ArcGIS.Display.tagRECT nowrect = new ESRI.ArcGIS.Display.tagRECT();
rect.left = 0;
rect.top = 0;
rect.bottom = bitmap.Height;
rect.right = bitmap.Width;
IEnvelope myenv2 = activeView.Extent;
myenv2.Expand(0.5, 0.5, true);
IntPtr hDC = graphics.GetHdc();
activeView.Output(hDC.ToInt32(), 0, ref rect, myenv, null);
graphics.ReleaseHdc(hDC);
graphics.Dispose();
Clipboard.SetImage(bitmap);
}
記事
