クリップボードにマップのグラフィックをコピー

// 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);
      
}