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

成都锦福工作室 2011-01-20 02:13:14
现在有一个.net项目 需要把一个gridview生成图片 然后让客户下载 这样的好处是生成的图片客户不能随意修改
但我目前还没有找到方法 如何把一个gridview生成图片的格式 请各位帮帮忙 谢谢~
...全文
193 点赞 收藏 18
写回复
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的每一行改成字符串是可以的!
回复 点赞
成都锦福工作室 2011年01月20日
谢谢楼上两位的回复 这里暂不讨论通过其他方式修改数据的可能 这里只会保存网页的部分截图 其实就是一个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日
你的页面有禁止复制粘贴么?

有禁止保存网页不?

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

直接打印可能比较好,保存图片没啥意义
回复 点赞
成都锦福工作室 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的话,没做过
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告