繁体   English   中英

tabpage里面的datagridview到位图

[英]datagridview inside of tabpage to bitmap

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

下面是一个如何将DataGridView放到Bitmap上的示例,即使其内容大于 DataGridViewTabPage甚至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 更大,并明确地写出目标矩形的坐标,而不是使用ClientRectangle ..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM