请问,可以从一个Graphics中得到一个Image 吗 改如何实现?

时间:2022-05-10 23:27:23
我利用Graphics在一个panel 上画了一副图,但是我如何可以把这副图保存成一个Image图像?

6 个解决方案

#1


用Image类的save方法可以实现。

#2


Graphics有个方法drawImage(),得到image对象,save()

#3


建议你首先新建一个Bitmap对象,然后在它上面用Graphics的方法画图,然后在panel的Graphics上面DrawImage,而且你可以控制你的缩放比例。

#4


to  Edelweissobject(青山绿水)and liduke(天下有雪)你们的方法行不通,关键是Graphics是画在一个HDC上,我没有办法从HDC上得到图形,drawImage()是把一个Image画到HDC上的
to polarlm(polarlm)你那样的是可以实现,可是我要在panel上作图,如果每画一笔都先画在
Bitmap上,在通过DrawImage画到panel太伤性能

求高手赐教

#5


发现一个问题,如果你在Panel上作图怎么让他保持?自己redraw么?

#6


查找帮助的时候发现以下方法
System.Drawing.Graphics g = this.panel1.CreateGraphics();
g.DrawArc(System.Drawing.Pens.AliceBlue,0,0,panel1.Width,panel1.Height ,0,360);
g.Save();
IntPtr hdc = g.GetHdc();
System.Drawing.Imaging.Metafile mf = new System.Drawing.Imaging.Metafile(hdc,System.Drawing.Imaging.EmfType.EmfPlusDual);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(panel1.Width,panel1.Height);
System.Drawing.Graphics gs = System.Drawing.Graphics.FromImage(bmp);
gs.DrawImage(mf,0,0);
bmp.Save("C:\\xxxx.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
mf.Dispose();
g.ReleaseHdc(hdc);

但是里面的东西是黑的,也就是虽然有句柄,但不是可持续性位图,所以看不到,按照帮助上说的,似乎可以建立一个Metafile,然后利用Metafile.CreateGraphics在这个Graphic上画东西,操作,再将这个Metafile画入Bmp中。

#1


用Image类的save方法可以实现。

#2


Graphics有个方法drawImage(),得到image对象,save()

#3


建议你首先新建一个Bitmap对象,然后在它上面用Graphics的方法画图,然后在panel的Graphics上面DrawImage,而且你可以控制你的缩放比例。

#4


to  Edelweissobject(青山绿水)and liduke(天下有雪)你们的方法行不通,关键是Graphics是画在一个HDC上,我没有办法从HDC上得到图形,drawImage()是把一个Image画到HDC上的
to polarlm(polarlm)你那样的是可以实现,可是我要在panel上作图,如果每画一笔都先画在
Bitmap上,在通过DrawImage画到panel太伤性能

求高手赐教

#5


发现一个问题,如果你在Panel上作图怎么让他保持?自己redraw么?

#6


查找帮助的时候发现以下方法
System.Drawing.Graphics g = this.panel1.CreateGraphics();
g.DrawArc(System.Drawing.Pens.AliceBlue,0,0,panel1.Width,panel1.Height ,0,360);
g.Save();
IntPtr hdc = g.GetHdc();
System.Drawing.Imaging.Metafile mf = new System.Drawing.Imaging.Metafile(hdc,System.Drawing.Imaging.EmfType.EmfPlusDual);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(panel1.Width,panel1.Height);
System.Drawing.Graphics gs = System.Drawing.Graphics.FromImage(bmp);
gs.DrawImage(mf,0,0);
bmp.Save("C:\\xxxx.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
mf.Dispose();
g.ReleaseHdc(hdc);

但是里面的东西是黑的,也就是虽然有句柄,但不是可持续性位图,所以看不到,按照帮助上说的,似乎可以建立一个Metafile,然后利用Metafile.CreateGraphics在这个Graphic上画东西,操作,再将这个Metafile画入Bmp中。