为已有的Java图形程序增加储存WMF矢量文件功能
2008-04-25 22:48
441 查看
word中的矢量图形格式是
typedefstruct_WindowsMetaHeader{WORDFileType;/*Typeofmetafile(0=memory,1=disk)*/WORDHeaderSize;/*SizeofheaderinWORDS(always9)*/WORDVersion;/*VersionofMicrosoftWindowsused*/DWORDFileSize;/*TotalsizeofthemetafileinWORDs*/WORDNumOfObjects;/*Numberofobjectsinthefile*/DWORDMaxRecordSize;/*ThesizeoflargestrecordinWORDs*/WORDNumOfParams;/*NotUsed(always0)*/}除了headers之外下面就是文件记录(StandardMetafileRecords)。结构如下:WMFHEAD;
typedefstruct_StandardMetaRecord{DWORDSize;/*TotalsizeoftherecordinWORDs*/WORDFunction;/*Functionnumber(definedinWINDOWS.H)*/WORDParameters[];/*Parametervaluespassedtofunction*/}WMFRECORD;也就是说每一个record中储存的是WindowsGDI绘图函数的代码及每个函数对应的参数.这样的 话整个 WMF文件就由这样的函数编码与参数组成。就像下面这样:
RecordName FunctionNumber AbortDoc0x0052Arc0x0817Chord0x0830DeleteObject0x01f0Ellipse0x0418
...
了解了WMF文件的格式,我们就清楚我们如何将我们的图形储存为 WMF格式了。我们知道在 Java中所有的绘图操作都是通过Graphics来完成的。基本上Graphics中的每一个绘图函数 在WindowsGDI中都有对应,我们只需继承一个Graphics类,重载它的每一个方法,转成 对应的WindwosGDI函数,就可以达到我们的目的了。
Graphics中的函数很多,工作量巨大,不用怕,网上已有人写好了,大家请到:http://piet.jonas.com去下载一个 WMFWriter吧。
下载后,将它加到classpath,再请使用我写的这个类,轻松的将你的图形存为WMF格式:
/** *Copyright:Copyright(c)2002 *Company: *@authorTurboChen *@version1.0 */ publicclassWMFWriter {
/**comp是你的图形所在的JComponent,out是你指定的输出流 publicvoidwrite(JComponentcomp,OutputStreamout)throwsException { try { intw=comp.getSize().width; inth=comp.getSize().height;WMF WMF=new WMF(); WMFGraphics WMFgraphics=new WMFGraphics( WMF,w,h); comp.paint( WMFgraphics); WMF.writePlaceable WMF(out,0,0,w,h,Toolkit.getDefaultToolkit().getScreenResolution()); WMFgraphics.dispose(); out.close(); } catch(Exceptionexception) { thrownewException("GRAPHICSERROR,CANNOTCREATE WMFFORMAT"); } }
}
相关文章推荐
- 为已有的Java图形程序增加储存WMF矢量文件功能
- JAVA样例整理(都为单一功能程序,逐步增加)
- java 矢量绘图程序,多文档视图,文档间拖拽,可导出成位图文件,可在线更新
- 编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。
- Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
- 黑马程序员—编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
- JAVA功能代码《7》----Java创建ZIP和JAR文件
- 编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
- [Java] JDOM 读取 xml 文件 示例程序初步
- Java:使用POI实现word的docx文件的模板功能
- Google面试题(java)—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD
- 巧用TWaver 3D 矢量图形功能
- (转)cocos2d-x2.0.3创建android程序缺失java文件的问题
- 常用的java方法,为程序添点小功能
- 在java程序项目中如何使用xml配置文件存储信息简述
- JAVA 程序实现文件到linux服务的上传与下载
- 给app增加itunes文件共享支持的功能
- duilib : 在对话框中增加文件拖拽功能
- JAVA 如何将一个图形(以文件存在,如JPG或者GIF)画到窗体的画布中