c# Graphics 画的图形保存问题

Bitmapbmp=newBitmap("ss.bmp");Graphicsg=Graphics.FromImage(bmp);Rectangleaaa=newRecta... Bitmap bmp = new Bitmap("ss.bmp");
Graphics g= Graphics.FromImage(bmp);
Rectangle aaa = new Rectangle(0, 0, 100, 100);
g.DrawImage(bmp, 0, 0, aaa, GraphicsUnit.Pixel);
bmp.Save(strFile, System.Drawing.Imaging.ImageFormat.Bmp);

首先 这样保存是可以的吧? 但是如果这段代码要放在
OnPaint(PaintEventArgs e)
里 要让DrawImage画出图像来 就要有Graphics g = e.Graphics;
那在这样的情况下改怎么把Graphics 画的图形保存下来?
因为
Graphics g= Graphics.FromImage(bmp);
Graphics g = e.Graphics;
冲突了
有没有别的办法让Graphics 画的图形能够保存成BMP图像呢
展开
 我来答
飞秒光年AI
2008-08-24 · TA获得超过117个赞
知道答主
回答量:59
采纳率:0%
帮助的人:0
展开全部
graphics 对象有两种,
一种创建自位图
即你说的Graphics.FromImage(bmp);
一种创建自窗体
即你说的放在OnPaint里的那个e.Graphics

对于创建自窗体的graphics对象,不能直接获取它的位图,而是要先获取它所代表的窗体,然后调用窗体的DrawToBitmap方法把窗体的图像画到已有的bitmap对象里,然后再由bitmap的save方法保存
下面跳过graphics对象,直接用this获取窗体:

Bitmap b = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(b, new Rectangle(0, 0, this.Width, this.Height));
b.Save("E:\\1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
情系小太阳
推荐于2016-09-07 · TA获得超过148个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:142万
展开全部
很简单:
你需要添加一个PictureBox到窗体上,然后:
--------
Graphics g;
Bitmap bmp = new Bitmap("ss.bmp");
this.pictureBox1.Image = bmp;
g = Graphics.FromImage(this.pictureBox1.Image);
//下面你可以使用Graphics自由涂鸦,下面代码是画一个X
g.DrawLine(new Pen(Color.Red,1f),0,0,300,300);
g.DrawLine(new Pen(Color.Red,1f),0,300,300,0);

//保存涂鸦后的画
this.pictureBox1.Image.Save(strFile,System.Drawing.Imaging.ImageFormat.Bmp);
--------------
代码不用放入OnPaint方法也能实时划出来,这就是PictureBox的一个使用Case。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冯益斌
2008-08-24 · TA获得超过1019个赞
知道小有建树答主
回答量:869
采纳率:100%
帮助的人:1004万
展开全部
vs2005里面给控件提供了DrawToBitmap函数
例如:
//保存窗体到图片
Bitmap formBitmap = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(formBitmap, new Rectangle(0, 0, this.Width, this.Height));
formBitmap.Save(@"d:\form.bmp", System.Drawing.Imaging.ImageFormat.Bmp);

//保存控件DataGridView到图片
Bitmap controlBitmap = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
this.dataGridView1.DrawToBitmap(controlBitmap, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height));
controlBitmap.Save(@"d:\control.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灵活又伶俐灬虎鲸j
2008-08-23 · 超过32用户采纳过TA的回答
知道答主
回答量:185
采纳率:0%
帮助的人:63.5万
展开全部
加我的Hi 我给你一段代码是用Graphics截屏后保存为BMP进行保存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
俺是清峪的
2008-08-23 · TA获得超过1017个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:161万
展开全部
这样保存图像:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Bitmap b=new Bitmap(200,200);
Graphics g=Graphics.FromImage(b);
g.FillRectangle(Brushes.Red,0,0,b.Width,b.Height);

Graphics g2=e.Graphics;
g2.FillRectangle(Brushes.White,this.ClientRectangle);
g2.DrawImage(b,new Rectangle(10,10,b.Width,b.Height));

b.Save("aa.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);//保存图像为aa.jpg

b.Dispose();
g2.Dispose();
g.Dispose();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式