主题:保存图形文件
Dic4000
[专家分:120] 发布于 2007-07-30 23:30:00
我在窗体上画了几个图形,想把这几个图形保存到文件(bmp类型)中,请问需要用到哪些函数?
回复列表 (共7个回复)
沙发
jzyray [专家分:20610] 发布于 2007-07-30 23:43:00
图形是怎么绘出的?
如果可以获得Image对象,那么就可以直接通过Image的Save方法保存
板凳
Dic4000 [专家分:120] 发布于 2007-07-31 00:03:00
我用的是Graphics来绘图的
用g.DrawPath(gp);完成了画图.(gp是GraphicsPath对象)
但不知道怎么把画上去的图形保存,用Bitmap的save()保存的是一幅全黑图像;
应该是下面两行代码的问题吧?
bitmap = new Bitmap(300, 300, g);
bitmap.Save(@"E:\mybitmap.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
3 楼
jzyray [专家分:20610] 发布于 2007-07-31 01:02:00
Bitmap(300, 300, g)只是为Bitmap对象设定g的分辨率而已
建议使用先创建Bitmap,再利用Graphics g = Graphics.FromImage(bitmap);的方法创建g,然后再bitmap.Save
4 楼
Dic4000 [专家分:120] 发布于 2007-07-31 22:45:00
谢谢,图形是出来了,可是为什么背景色是黑色的啊?
我窗体的背景色设置的是白色啊~~~~
而且如果对这个窗体设置一个背景图片,然后在它上面画几个图形,保存后却只显示所画的这几个图形.背景图片也没显示出来,背景色仍就是黑的.
5 楼
jzyray [专家分:20610] 发布于 2007-08-01 15:56:00
如果是按照Bitmap先缓冲的方法来做的话,就不要光看界面如何如何,内容要切实反映到bitmap中去,比如g.Clear(Color.White)设置背景色为白色等
6 楼
Dic4000 [专家分:120] 发布于 2007-08-01 22:37:00
谢谢,加了g.Clear(Color.White) 问题解决了.
还有个问题:在开始绘图之前,我在窗体的Load事件中用this.BackgroundImage=Bitmap.FromFile(@"图片路径");的方式加载了图片,随后在此背景图上画了一个图形,保存后要求把背景图和图形直接保存到文件中.但是怎么把背景图和图形保存到文件中呢?
你用缓冲的方式Graphics g = Graphics.FromImage(bitmap);的方法先创建g,然后再bitmap.Save,但是这个g不是窗体的CreatGraphics()返回的,所以保存不了这个背景图,只能保存用g画的图形.
应该怎么做呢?有没有办法直接获取窗体CreatGraphics()返回的那个Graphics对象对应的Image对象呢?
7 楼
jzyray [专家分:20610] 发布于 2007-08-01 23:33:00
Graphics只可能从缓冲区创建,不管是窗体缓存还是Bitmap,逆行不行
你可以
1、g.DrawImage....
或者
2、bitmap缓冲区用Bitmap.FromFile...创建
我来回复