C# 将整个DataGridView保存为图像
我需要将整个DataGridView保存为图像。C# 将整个DataGridView保存为图像,c#,winforms,datagridview,bitmap,C#,Winforms,Datagridview,Bitmap,我需要将整个DataGridView保存为图像。 我在网上看到过一些帖子,但对我来说不起作用。 到目前为止,我已经尝试了以下两个链接: 和。 我的意图是,一旦按下按钮,DataGridView将转换为图像,并自动保存到桌面 我正在使用的代码生成一个错误: GDI中发生一般性错误+ 希望能得到一些帮助。谢谢 尝试替换位图.Save(@“C:\\Desktop\\datagrid.jpg”)带有: File.WriteAllBytes(@"C:\\Desktop\\datagrid.jpg", (b
我在网上看到过一些帖子,但对我来说不起作用。
到目前为止,我已经尝试了以下两个链接:
和。
我的意图是,一旦按下按钮,DataGridView将转换为图像,并自动保存到桌面 我正在使用的代码生成一个错误: GDI中发生一般性错误+
希望能得到一些帮助。谢谢 尝试替换
位图.Save(@“C:\\Desktop\\datagrid.jpg”)代码>带有:
File.WriteAllBytes(@"C:\\Desktop\\datagrid.jpg", (byte[])new ImageConverter().ConvertTo(bitmap, typeof(byte[])));
试试这个
图像保存文件路径,如“C:\Users\User\Desktop\datagrid.jpg”
您需要修复代码的多个部分:
bitmap.Save(@“C:\\Desktop\\datagrid.jpg”)代码>。此路径字符串应为:
@“C:\Users\SomeUser\Desktop\datagrid.jpg”
或
“C:\\Users\\SomeUser\\Desktop\\datagrid.jpg”
。见第6点
计算DataGridView高度时,不包括网格标头。
创建位图
对象时,必须将该对象与创建的任何其他一次性对象一样处理掉。可以使用)方法或将对象包含在块中
Bitmap.Save([Path])
在不指定位图的情况下,创建一个PNG
图像。不考虑在路径字符串中插入的文件扩展名。此时,您正在创建一个扩展名为.jpg
的文件,而实际上它是一个.png
文件。
保存此类位图时,应使用Png
格式,而不是Jpeg
。它的低损耗压缩更加精确:它将保留图像颜色并提高整体质量
当前用户桌面的路径不应硬编码。此路径由返回
您可以按如下方式修改代码:
using System.IO;
private void button1_Click(object sender, EventArgs e)
{
int DGVOriginalHeight = dataGridView1.Height;
dataGridView1.Height = (dataGridView1.RowCount * dataGridView1.RowTemplate.Height) +
dataGridView1.ColumnHeadersHeight;
using (Bitmap bitmap = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height))
{
dataGridView1.DrawToBitmap(bitmap, new Rectangle(Point.Empty, this.dataGridView1.Size));
string DesktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
bitmap.Save(Path.Combine(DesktopFolder, "datagridview1.png"), ImageFormat.Png);
}
dataGridView1.Height = DGVOriginalHeight;
}
此行`bitmap.Save(Path.Combine(DesktopFolder,“datagridview1.png”),ImageFormat.png);}`是指`位图.Save(Path.Combine(DesktopFolder,\\datagridview1.png),ImageFormat.png);}@一点也不。这是我们的工作。查看文档。好的,我以为你在使用其他方法连接这两条路径,请阅读路径。合并方法,非常感谢。嗨,吉米。非常感谢你的指点。您的代码显著改进了最终输出。:)@masyita shariff我很高兴听到它:)除了没有其他的e之外,请注意,只有当位图同时具有Hi-Dhanushka维度时,这才有效。如果只有一行,则您的方法能够将datagridview完全保存为图像。如果有两行或更多行,则第二行之后的列将被阻塞。不过,我也感谢你的帮助。谢谢
bitmap.Save(@"C:\Users\User\Desktop\datagrid.jpg");
using System.IO;
private void button1_Click(object sender, EventArgs e)
{
int DGVOriginalHeight = dataGridView1.Height;
dataGridView1.Height = (dataGridView1.RowCount * dataGridView1.RowTemplate.Height) +
dataGridView1.ColumnHeadersHeight;
using (Bitmap bitmap = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height))
{
dataGridView1.DrawToBitmap(bitmap, new Rectangle(Point.Empty, this.dataGridView1.Size));
string DesktopFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
bitmap.Save(Path.Combine(DesktopFolder, "datagridview1.png"), ImageFormat.Png);
}
dataGridView1.Height = DGVOriginalHeight;
}