我有一个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);
答案 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
..