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图像呢 展开
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图像呢 展开
5个回答
展开全部
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);
一种创建自位图
即你说的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);
展开全部
很简单:
你需要添加一个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。
你需要添加一个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。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
例如:
//保存窗体到图片
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加我的Hi 我给你一段代码是用Graphics截屏后保存为BMP进行保存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样保存图像:
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();
}
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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询