c# Graphics 画的图形保存问题

2025-01-06 20:08:37
推荐回答(5个)
回答1:

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);

回答2:

很简单:
你需要添加一个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。

回答3:

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);

回答4:

加我的Hi 我给你一段代码是用Graphics截屏后保存为BMP进行保存

回答5:

这样保存图像:
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();
}