为超图三维场景添加屏幕快照功能

 1 public static void saveSceneScreenShot(Control control)  2 {  3     Image objImage = getSceneScreenShot(control);  4     if (objImage != null)  5  {  6         SaveFileDialog saveImageDialog = new SaveFileDialog();  7         saveImageDialog.Title = "场景快照";  8         saveImageDialog.Filter = @"png|*.png|jpeg|*.jpg|bmp|*.bmp";  9         if (saveImageDialog.ShowDialog() == DialogResult.OK) 10  { 11             string fileName = saveImageDialog.FileName.ToString(); 12             if (fileName != "" && fileName != null) 13  { 14                 string fileExtName = fileName.Substring(fileName.LastIndexOf(".") + 1).ToString(); 15                 System.Drawing.Imaging.ImageFormat imgformat = System.Drawing.Imaging.ImageFormat.Png; 16                 if (fileExtName != "") 17  { 18                     switch (fileExtName) 19  { 20                         case "jpg": 21                             imgformat = System.Drawing.Imaging.ImageFormat.Jpeg; 22                             break; 23                         case "bmp": 24                             imgformat = System.Drawing.Imaging.ImageFormat.Bmp; 25                             break; 26                         case "png": 27                             imgformat = System.Drawing.Imaging.ImageFormat.Png; 28                             break; 29                         default: 30                             break; 31  } 32                             
33  objImage.Save(fileName, imgformat); 34  } 35  } 36  } 37  } 38 } 39 
40 public static Image getSceneScreenShot(Control control) 41 { 42     Image objImage = null; 43 
44     try
45  { 46         int width = control.Width; 47         int height = control.Height; 48         Point pt = control.PointToScreen(new Point(0, 0)); // 客户区坐标转换为屏幕坐标
49 
50         objImage = new Bitmap(width, height); 51 
52         Graphics g = Graphics.FromImage(objImage); 53                 
54         g.CopyFromScreen(pt, new Point(0, 0), new Size(width, height)); 55 
56         IntPtr dc1 = g.GetHdc(); 57 
58  g.ReleaseHdc(dc1); 59  } 60     catch(Exception ex) 61  { 62  MessageBox.Show(ex.Message); 63  } 64 
65     return objImage; 66 }

 

你可能感兴趣的:(为超图三维场景添加屏幕快照功能)