感觉这个问题比较难,怎样将dataGridView的当前行保存为图片

tank_2009 2009-09-02 11:32:41
RT。


if ( dataGridView1.SelectedRows != 1 )
{
returnl;
}

Bitmap bmp = new Bitmap(dataGridView1.Width, dataGridView1.CurrentRow.Height);

// 怎样将当前行转换为图片 ,保存到bmp中呢? 谢谢
...全文
215 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之影子 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tank_2009 的回复:]
比如 dataGridView1.DrawToBitmap 可以将dataGridView1保存为图片 ,但是我现在只想将选中的当前行保存为图片 。谢谢
[/Quote]


那只有载图了.
以下方法你参照一下

public void GetImage()//载取屏幕特定位置
{
try
{
PrintPreviewDialog ppvw = new PrintPreviewDialog();
i = new Bitmap(this.panelChart.Width, this.panelChart.Height);
Graphics g = Graphics.FromImage(i);
Point p = panelChart.PointToScreen(panelChart.Location);
g.CopyFromScreen(p.X / 2+5, p.Y - 12, 0, 0, new Size(this.panelChart.Width, this.panelChart.Height-5));
ppvw.Document = printDoc;
printDoc.DefaultPageSettings.Landscape = true;
printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
if (ppvw.ShowDialog() != DialogResult.OK)
{
printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
return;
}
printDoc.Print();
g.Dispose();
}
catch
{}
}
jbo126 2009-09-02
  • 打赏
  • 举报
回复
看来高手都忙着养家糊口去了,那我有个法你可以试一下,用那个DrrawToBitmap()存在图片,如bmp1(说实话,这一步我怀疑够呛能行,你先一试吧,不行我再想招儿!!);然后用Bitmap类的Clone方法复制其中的一部分,具体由Rectangle的参数决定,为了取得有效的Rectangle,你应先计算选中行的坐标!
tank_2009 2009-09-02
  • 打赏
  • 举报
回复
比如 dataGridView1.DrawToBitmap 可以将dataGridView1保存为图片 ,但是我现在只想将选中的当前行保存为图片 。谢谢
angel6709 2009-09-02
  • 打赏
  • 举报
回复
????
tank_2009 2009-09-02
  • 打赏
  • 举报
回复
谢谢 zgke....
  • 打赏
  • 举报
回复
Mark,说不定以后会遇到类似问题
zgke 2009-09-02
  • 打赏
  • 举报
回复
if (dataGridView1.SelectedRows.Count != 0)
{
DataGridViewRow _Row = dataGridView1.SelectedRows[0];
dataGridView1.FirstDisplayedCell = _Row.Cells[0];
Rectangle _Rectangle = dataGridView1.GetRowDisplayRectangle(_Row.Index,false);
Rectangle _AllCount = dataGridView1.GetColumnDisplayRectangle(0, false);
for (int i = 0; i != dataGridView1.Columns.Count; i++)
{
_AllCount.X += dataGridView1.Columns[i].Width;
}
_Rectangle.Width = _AllCount.X;

int _Width = dataGridView1.Width;
dataGridView1.Width = _Rectangle.X + _Rectangle.Width;
_Row.Selected = false;
Bitmap _NewBitmap = new Bitmap(dataGridView1.Width, dataGridView1.Height);
dataGridView1.DrawToBitmap(_NewBitmap, new Rectangle(0, 0, _NewBitmap.Width, _NewBitmap.Height));
_Row.Selected = true;
dataGridView1.Width = _Width;
this.BackgroundImage = _NewBitmap.Clone(_Rectangle,_NewBitmap.PixelFormat);
}
tank_2009 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 libinguest 的回复:]

那只有载图了.
以下方法你参照一下
C# codepublicvoid GetImage()//载取屏幕特定位置 {try
{
PrintPreviewDialog ppvw=new PrintPreviewDialog();
i=new Bitmap(this.panelChart.Width,this.panelChart.Height);
Graphics g= Graphics.FromImage(i);
Point p= panelChart.PointToScreen(panelChart.Location);
g.CopyFromScreen(p.X/2+5, p.Y-12,0,0,new Size(this.panelChart.Width,this.panelChart.Height-5));
ppvw.Document= printDoc;
printDoc.DefaultPageSettings.Landscape=true;
printDoc.PrintPage+=new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);if (ppvw.ShowDialog()!= DialogResult.OK)
{
printDoc.PrintPage-=new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);return;
}
printDoc.Print();
g.Dispose();
}catch
{}
}
[/Quote]


就是不知道怎样精确定位 被选中行的坐标区域!
angel6709 2009-09-02
  • 打赏
  • 举报
回复
友情up

111,094

社区成员

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

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

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