以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 SVG/GML/VRML/X3D/XAML 』 (http://bbs.xml.org.cn/list.asp?boardid=21) ---- Batik 入门 (一)(二)(三) [转帖] (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=44728) |
-- 作者:supremeweb -- 发布时间:4/2/2007 1:22:00 PM -- Batik 入门 (一)(二)(三) [转帖] 一、概述 Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包。 二、batik的用途 Squiggle, an SVG browser 三、SVG DOM API DOM API定义了一个接口叫做DOMimplementation,这个接口用来表现任意DOM implementation之间的连接。这个类的作用是通过提供方法创建一个document来连接一个指定的DOM实例。然后具体的Document表现为一个XML Document 并且跟各种各样的DOM对象工厂比如Element,Attr,Text那样动作。 那么怎样才能获得一个依赖于你使用的DOM Implementation的DOMImplementation 实例呢?在Batik中DOM Implementation存在于包org.apache.batik.dom.svg中,类名为SVGDOMImplementation。以下例子表示怎样获取一个具体的DOMImplementation对象: import org.w3c.dom.DOMImplementation; DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); 1.创建一个Doucument // 在SVGDOMImplementation中我们使用了一个不变的常量 DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); // 获得根元素('svg' 元素). // 设置'svg'根元素的宽,高属性. // 创建矩形 // 绑定 rectangle 到'svg'根元素. 3.从一个SVG文件中创建一个Document import org.apache.batik.dom.svg.SAXSVGDocumentFactory; import org.w3c.dom.Document; try {
|
-- 作者:supremeweb -- 发布时间:4/2/2007 1:27:00 PM -- Batik 入门(二)[转帖] 四、解析器模块 SVG有很多没有属性值的微型语法使用,比如SVGTransformable元素中的transform属性,path元素中的path data d属性等。以前这些属性不能很好的被解析,现在必要时可以通过SVG进程应用程序来使用。 1.解析器,操作者,生产者 这个解析器被用来解析Fragment identifiers(片断定义)的svg允许的各种格式。 Lengths Length lists Numbers Number lists Path data Points Preserve aspect ratio values (保持屏幕比率值) Transform lists 一些微型语法同样也有一个相应的生产者类,这个类是在解析的同时生成对象的一个处理接口的执行。 2.举例 下面例子用来举例怎么用一个解析器来解析一个点列表 import java.awt.geom.Point2D; import org.apache.batik.parser.DefaultPointsHandler; public class PointsParserExample { public List extractPoints(String s) throws ParseException { import java.awt.geom.AffineTransform; import org.apache.batik.parser.AWTTransformProducer; public class TransformParserExample { public AffineTransform parseTransformList(String s) throws ParseException { |
-- 作者:supremeweb -- 发布时间:4/2/2007 1:31:00 PM -- Batik入门(三)[转帖] Scripting with ECMAScript 脚本基础 作为ECMAScript 语言(JavaScript的标准版本)是最流行的脚本语言之一,并且作为SVG的标准规定任何一个SVG都必须支持它。SVG documents 处理通过Batik 支持带有使用 Mozilla’s ECMAScript interpreter, Rhino ECMAScript的脚本. 在SVG 文件中,有两个地方你可以放入脚本。 第一个地方是在script 元素中, 在这里你可以放置任何代码, 包括函数定义, 在document SVGLoad事件发生之前执行这些脚本. <!-- Remainder of the document... --> 你也可以帮定脚本来响应用户或者在SVG元素中document事件使用属性。像上边的例子中,脚本语言必须设置在脚本元素中。无论如何,为了事件处理,默认的语言类型text/ecmascript 被指定. 如果你想改变它,那么你可以在svg 元素中使用contentScriptType 属性. 脚本属性可以被包含在任意脚本代码中来执行,当事件延伸到bubbling或者 at-target phases 中时。下面的例子将改变rect被填充为蓝色,当它被点击的时候 注意在事件属性脚本内部,这里有一个变量叫做evt,这个变量涉及到表现被处理事件的事件对象。 Rhino有很多通过标准的ECMAScript解释器支持的特性,并且这个特性可以在batik中使用 。一个有用的特性是ECMAScript 代码可以使用java类和对象, 并且不仅仅是标准的ECMAScript 原始类型和通过Batik的主机对象扩展。 要从ECMAScript 中创建一个java类实例,你首先需要导入它存在的包。这个实现要使用Rhino 提供的importPackage 全局函数. 举个例子, 要导入javax.swing.JFrame 类, 你使用: importPackage(Packages.javax.swing); 然后暴露在javax.swing保重每个类的一个全局属性,这个属性你可以用来创建一个新的这个类的对象, 类似于在java中的import javax.swing.*;声明。我们可以使用暴露的Jframe属性来创建一个新的这个类的实例 : var frame = new JFrame("My test frame"); 注意怎样将一个ECMAScript 字符串值,转换为 JFrame’s 构造器的一个参数. Rhino 将试图转换ECMAScript 值到适当的java原始类型或者对象用来在构造器或者方法调用下制造。在这个实例中 ECMAScript字符串值被转换为一个 java.lang.String 对象以便传给解释器。 注意,在这我们涉及到java对象,我们可以象我们在java源码中那样调用它的任何方法。下面这个完整的例子将论证这个,例子主要是点击一个绿色的圆,将弹出一个frame。 function showFrame() { 自定义 Rhino 解释器 一个有用的Rhino解释器自定义的例子来自ECMAScript标准不提供任何预先确定的I/O设备来结合控制台的事实。无论如何,对于ECMAScript兼容语言来提供一个命名为打印输出信息到控制台的功能是非常通用的。在这我们将描述一个Batik Rhino 解释器自定义的例子来添加如下功能。 你应该首先将默认的Batik ECMAScript 解释器子集化以便象下边所示的那样添加功能import org.apache.batik.script.rhino.RhinoInterpreter; import org.mozilla.javascript.Context; public class ExtendedRhinoInterpreter extends RhinoIntepreter { public ExtendedRhinoInterpreter() { // Array of functions to put in the global object. public class ExtendedRhinoInterpreterFactory implements InterpreterFactory { public Interpreter createInterpreter() { 举个例子,如果你使用Batik SVG 浏览器程序,你应该可以使用在createBridgeContext()方法中的JSVGCanvas类中先前的代码片段。 更深的是用Rhino工作参考Rhino主页
|
-- 作者:wwwtiger -- 发布时间:4/2/2007 4:47:00 PM -- 好,BATIK的中文资源实在是太少了! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
78.125ms |