tabpage里面的datagridview到位图

时间:2016-06-21 14:16:37

标签: c# winforms datagridview

我有一个TabPage内的dataGridView。现在我需要创建一个dataGridView的图像,但我在网上寻找解决方案,我发现了DrawToBitmap但只占用了dataGridView的一部分。

这是我现在正在使用的代码

bm = new Bitmap(this.dataGridView2.Width, this.dataGridView2.Height);
dataGridView2.DrawToBitmap(bm,new Rectangle(100,100, his.dataGridView1.Width, this.dataGridView1.Height));
e.Graphics.DrawImage(bm, 0, 0);

1 个答案:

答案 0 :(得分:0)

以下是如何将DataGridView放到Bitmap上的示例,如果的内容比DataGridView或{{1}更大,则为或者甚至是TabPage

诀窍是暂时扩大Form调用的DataGridView,以便所有单元格都适合并且没有滚动条。然后将其设置回适合您布局的原始尺寸..:

DrawToBitmap

如果你想要填充,你可以简单地让Size oldsize = dataGridView1.ClientSize; var tw = dataGridView1.Columns.Cast<DataGridViewColumn>().Select(x => x.Width).Sum(); var th = dataGridView1.Rows.Cast<DataGridViewRow>().Select(x => x.Height).Sum(); dataGridView1.ClientSize = new Size(tw + dataGridView1.RowHeadersWidth, th + dataGridView1.ColumnHeadersHeight); Bitmap bmp = new Bitmap(dataGridView1.ClientSize.Width, dataGridView1.ClientSize.Height); using (Graphics G = Graphics.FromImage(bmp)) dataGridView1.DrawToBitmap(bmp, dataGridView1.ClientRectangle); bmp.Save(yourFilename, ImageFormat.Png); dataGridView1.ClientSize = oldsize; 更大并明确地写出目标矩形的坐标,而不是使用Bitmap ..