Visual C# 2005 - 如何将 DataGridView 控件单独截取成一个位图文件
2006-10-12 09:37:11
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 |
DataGridView 控件的外观状似一个电子表格,因此有人希望把 DataGridView 控件单独截取并储存成一个位图。我们撰写了一个操作接口如图表 1 所示的程序,您只需按下窗体中的按钮,即可将窗体中的 DataGridView 控件单独截取并储存成一个位图(.bmp)。
![]() 在此兹将重点程序代码列示如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Drawing.Imaging; using System.Data.SqlClient; … … [DllImport("gdi32.dll", CharSet=CharSet.Auto)] private static extern bool BitBlt( IntPtr pHdc, int iX, int iY, int nWidth, int nHeight, IntPtr pSrcDC, int xSrc, int ySrc, Int32 dwRop ); private const int SRC = 0xCC0020; private DataSet myDataSet; public void ConvertDataGridViewToBMP(DataGridView e, string myBitmapFilePath) { e.Refresh(); e.Select(); Graphics g = e.CreateGraphics(); Bitmap ibitMap = new Bitmap(e.ClientSize.Width, e.ClientSize.Height, g); Graphics iBitMap_gr = Graphics.FromImage(ibitMap); IntPtr iBitMap_hdc = iBitMap_gr.GetHdc(); IntPtr me_hdc = g.GetHdc(); BitBlt(iBitMap_hdc, 0, 0, e.ClientSize.Width, e.ClientSize.Height, me_hdc, 0, 0, SRC); g.ReleaseHdc(me_hdc); iBitMap_gr.ReleaseHdc(iBitMap_hdc); if (myBitmapFilePath == "") { return; } ibitMap.Save(myBitmapFilePath, ImageFormat.Bmp); } private void Button1_Click(object sender, EventArgs e) { try { SaveFileDialog1.Title = "储存成位图"; SaveFileDialog1.Filter = "位图档 (*.bmp)|*.bmp"; if(SaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) { return; } } catch(Exception ex) { MessageBox.Show(ex.Message); return; } string myBitmapFilePath; myBitmapFilePath = SaveFileDialog1.FileName; if (myBitmapFilePath == "") { return; } else { this.ConvertDataGridViewToBMP(DataGridView1, myBitmapFilePath); } } 本文出自 “章立民” 博客,转载请与作者联系! 本文出自 51CTO.COM技术博客 |




章立民
博客统计信息
热门文章
最新评论
友情链接