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_。
需要说明的是,这段代码的基本原理是通过操作系统,向控件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_。
相关文章推荐
- 有没有办法让ifconfig将IP地址保存到某个文件中,然后启动时系统自动根据那个文件配置IP
- 如何将SL的image保存到SL的独立存储文件系统
- 将图片保存到数据库,由数据库输出图片为临时文件给Image 控件用
- WPF与Win32图形系统
- 怎样隐藏uploadify上传控件的按钮,然后通过其它控件的事项来触发uploadify控件的文件浏览窗口并现实文件上传功能
- android图形系统详解一:Canvas
- wpf之TXTextControl控件读取、保存文件
- canvas之图形的变化(保存,平移,缩放,旋转)
- 提示“一个或多个文件超出系统文件大小限制,这些文件无法被正确保存”,应该怎么解决?
- C++ GDI+提取系统文件或文件夹的图标,保存为透明图片
- C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标(转)
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- [100kb]微型图形用户界面系统GUI(支持常用控件,BMP,JPG支持!)
- 怎么实现NPOI导出excel保存到服务器上,然后返回文件地址下载?
- R语言:保存输出图形为pdf文件 备注:学习备忘
- 用VB将剪切板中的图片保存为JPG文件
- delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法
- [原创] 系统文件对话框中各控件的ID值
- Drupal上把phpExcel生成的Excel文件保存到Drupal文件系统
- 用系统时间作为文件的保存名