您的位置:首页 > 其它

Canvas等控件在Win32系统下保存成Image然后保存到JPG等图形文件

2009-12-28 19:56 393 查看
在做AutomatonDesigner的时候,使用了SWT的绘图技术,其中要把用户通过组建构建好的自动机模型保存成jpg等图片的形式,主要使用如下的代码。

需要说明的是,这段代码的基本原理是通过操作系统,向控件control发送重绘消息,让其在新构建的GC中进行重绘,因此控件需要支持WM_PRINT消息,并且暂时此函数只支持Win32系统,使用之前可以用OS.IsWin32s所获得的boolean值判断当前系统是否是Win32系统。

Image的保存

1 public void doSaveAs() {
2 FileDialog dlg = new FileDialog(Display.getCurrent().getActiveShell(), SWT.SAVE);
3 dlg.setFileName(this.getTitle()+".jpg");
4 dlg.setFilterNames(new String[]{"Image Files"});
5 dlg.setFilterExtensions(new String[]{"*.jpg"});
6 String fileName = dlg.open();
7 if (fileName == null){
8 return;
9 }
10 File file = new File(fileName);
11 if (file.exists()){
12 if(!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "已存在", "该文件已经存在,是否覆盖?"))
13 return;
14 }
15 ImageLoader loader = new ImageLoader();
16 loader.data = new ImageData []{CommonTool.makeShotImage(canvas).getImageData()};
17 loader.save(fileName, SWT.IMAGE_JPEG);
18 setDirty(false);
19 firePropertyChange(PROP_DIRTY);
20 }

SWT.IMAGE_JPEG是save函数支持的文件格式之一,当然它还支持PNG等等格式,其参数前缀都为SWT.IMAGE_。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐