结合 GFX,DnD 与 Dijit 创建基于 Dojo 的 Web 图形类应用
2010-08-05 00:00:00 来源:WEB开发网这里有三处值得注意,首先开发人员可以通过全局 djConfig 对象中的 gfxRender 属性来指定在加载过程中使用何种绘图引擎及其优先级,清单 1 中 SVG 将会被首先尝试,如果失败将再尝试 Silverlight,最后再试 VML,而 Canvas 将不再所尝试的范围之内;再者,当使用 dojox.gfx.createSurface() 方法生成 surface 对象时,必须对其长宽值赋予初值,即使其初始大小均为 0,不然在 IE 下会有绘图画面无法渲染的问题出现,对象生成后可以通过 setDimensions (width, height) 方法对其大小进行动态调整。最后一点,在 surface 对象生成之后,由于其背后关联的引擎有所不同,有的引擎需要额外的时间进行初始化工作,所以我们不能在得到 surface 对象之后立即使用其进行图形绘制,而是应该采用异步回调的方式,当 surface 对象初始化完毕后由再执行绘图操作,以确保不同绘图引擎之间的兼容性。
在得到一个图形对象之后,2D 绘图中一个常见的操作便是对图形进行各种变形 (transformation) 操作,其中包括旋转(Rotate)、缩放(Scale)、平移(Translate)以及倾斜(Skew)。GFX 通过提供 setTransform(matrix) 方法,使开发人员只需提供正确的矩阵对象参数便可以实现相应的变形,同时为了简化计算,还提供了一系列变形矩阵帮助类(dojox.gfx.matrix), 从而使得开发人员只需选择相应的变形类,即可完成对应操作。例如,存在一个 500*500 大小的图形组,使用如下的矩阵变形数组即可完成图形扩大 2 倍并顺时针旋转 45 度的操作。
[translate(250, 250), rotateg(-45), scale(2), translate(-250, -250)]
另外,GFX 支持组对象概念,当一个 surface 对象中涉及对多个图形的操作时,我们可以将这些图形划分加入到同一个组中。组兼具 surface 和 shape 二者的特征,复杂图形的创建、多图形的事件响应处理以及多图形属性的统一调整等操作,都需要借助组的概念来完成。开发人员不仅可以将画面中存在的图形添加到组中,还可以使用与画面相同的 API 创建图形,surface 和 group 对象都支持使用 add()/remove() 操作来完成图形的添加或删除操作。清单 2 首先创建了一个 group 对象,而后将 surface 对象里的直线添加到自身,并对这两个图形进行了统一的变形操作。
- ››结合照片打造时尚炫酷的草图效果
- ››结合 Dojo 和 JAX-RS 创建 RESTful 服务
- ››结合 GFX,DnD 与 Dijit 创建基于 Dojo 的 Web 图...
- ››结合使用 CICS 和 DB2 pureXML
- ››结合使用 IBM InfoSphere Warehouse Design Studi...
- ››结合使用 IBM InfoSphere Warehouse Design Studi...
- ››结合使用 Apache Geronimo 和 Lift:用 Lift 创建...
- ››结合使用 Ajax 和 WebSphere Portal
- ››结合使用 WebSphere Application Server V7 和 IP...
- ››结合数位板鼠绘漂亮的绿色卡通插画
- ››结合IA制作漂亮的花纹立体字
- ››结合SNS 飞信成新一代即时通信翘楚
更多精彩
赞助商链接