100分 把控件(gridview)生成图片

成都锦福工作室 2011-01-20 02:13:14
现在有一个.net项目 需要把一个gridview生成图片 然后让客户下载 这样的好处是生成的图片客户不能随意修改
但我目前还没有找到方法 如何把一个gridview生成图片的格式 请各位帮帮忙 谢谢~
...全文
280 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
dylike 2011-01-20
  • 打赏
  • 举报
回复
不考虑截图方法,而使用代码绘制,比如页面上显示的是GDV,但生成的图片并不是由GDV截图的,而是通过GDI+绘制出来的,样子和页面上显示的GDV一样.
卧_槽 2011-01-20
  • 打赏
  • 举报
回复
有一个比较BT的方法。你去翻Gridview的源代码,把代码都copy出来。做成一个自己的gridview,然后修改最后的paint方法,就可以得到gridview每次绘制到屏幕的图片了。

一劳永逸啊。
白鸽 2011-01-20
  • 打赏
  • 举报
回复
这个问题我给你最好的方法就是用Devexpress中GridView它自带了一些如比较强大的功能你看看有用吗!可以直接生成pdf、word、excel之类的文件。生成图片的不太清楚你看看有用吗
龍过鸡年 2011-01-20
  • 打赏
  • 举报
回复

Bitmap img = new Bitmap(
this.dataGridView1.ClientSize.Width,
this.dataGridView1.ClientSize.Height);

this.dataGridView1.DrawToBitmap(img,
this.dataGridView1.ClientRectangle);

this.pictureBox1.Image = img;


如果数据列过多而导致绘制的数据不完整,那是没有办法的,除非自己Paint咯
koukoujiayi 2011-01-20
  • 打赏
  • 举报
回复
把GridView的每一行改成字符串是可以的!
  • 打赏
  • 举报
回复
谢谢楼上两位的回复 这里暂不讨论通过其他方式修改数据的可能 这里只会保存网页的部分截图 其实就是一个GRIDVIEW得截图 连接里的是通过API截取整个网页的图片 似乎不太符合的我需求
难道真的没有办法把gridview输出成图片格式了吗?
thisiscandy 2011-01-20
  • 打赏
  • 举报
回复
同ls
http://topic.csdn.net/u/20070405/12/743C100A-0798-4D0C-BA24-2BF1C62BF821.html
http://msdn.microsoft.com/zhcn/library/system.windows.forms.webbrowserbase.drawtobitmap(v=vs.80).aspx
assky124 2011-01-20
  • 打赏
  • 举报
回复
你的页面有禁止复制粘贴么?

有禁止保存网页不?

如果没有想修改数据没啥难度。

直接打印可能比较好,保存图片没啥意义
  • 打赏
  • 举报
回复
谢谢大家的回复 但是我的项目是.net的 gridview(不是winform的datagridview)是没有location这个属性
bdmh 2011-01-20
  • 打赏
  • 举报
回复

Bitmap bmp = new Bitmap(dataGridView1.Width, dataGridView1.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(new Point(this.Location.X + dataGridView1.Location.X, (this.Height - this.ClientRectangle.Height) + this.Location.Y + dataGridView1.Location.Y), new Point(0, 0), new Size(dataGridView1.Width, dataGridView1.Height));
IntPtr dc1 = g.GetHdc();
g.ReleaseHdc(dc1);
bmp.Save(@"c:\1.jpg");
thisiscandy 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bdmh 的回复:]

引用 4 楼 thisiscandy 的回复:
C# code
private void 截图ToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap myImage = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
Grap……

这……
[/Quote]
这个不是dataGridView1的屏幕坐标?

学习7L
wuyq11 2011-01-20
  • 打赏
  • 举报
回复
用ActiveX,页面截图
bdmh 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 thisiscandy 的回复:]
C# code
private void 截图ToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap myImage = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
Grap……
[/Quote]
这里应该把dataGridView1的坐标转换为屏幕坐标,否则取出的是不对的,可以加上form的坐标来取得
wy811007 2011-01-20
  • 打赏
  • 举报
回复
就是截图么..LS的方法应该可以的.
thisiscandy 2011-01-20
  • 打赏
  • 举报
回复
 private void 截图ToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap myImage = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
Graphics g = Graphics.FromImage(myImage);
g.CopyFromScreen(this.PointToScreen(new Point(this.dataGridView1.Location.X,this.dataGridView1.Location.Y)), new Point(0, 0), new Size(this.dataGridView1.Width, this.dataGridView1.Height));
IntPtr dc1 = g.GetHdc();
g.ReleaseHdc(dc1);
myImage.Save(@"c:\screen1.jpg");
}

改成这样 你看下 我测试过了 可以的。
hch126163 2011-01-20
  • 打赏
  • 举报
回复
Graphics 对象 draw 也行

thisiscandy 2011-01-20
  • 打赏
  • 举报
回复
 private void button3_Click(object sender, EventArgs e)
{
Bitmap myImage = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(myImage);
g.CopyFromScreen(new Point(this.Location.X, this.Location.Y), new Point(0, 0), new Size(this.Width, this.Height));
IntPtr dc1 = g.GetHdc();
g.ReleaseHdc(dc1);
myImage.Save(@"c:\screen1.jpg");
}

这个是截取窗体的,里面的参数改下不就是gridview的了吗?
wdywqc 2011-01-20
  • 打赏
  • 举报
回复
把整个页面生成jpg的话还可以,要是把某一个空间生成一个jpg的话,没做过

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧