Delphi与SVG动画进行交互的研究

阅读: 评论:0

2024年2月6日发(作者:)

Delphi与SVG动画进行交互的研究

电脑编程技巧与维护 Delphi与SVG动画进行交互的研究 李国威,康栋梁 (郑州煤矿机械集团股份有限公司,郑州450000) 摘要:通过研究SVG、HTML、COM与Delphi之间的联系,提出了一种在Delphi与SVG进行交互的方法。旨在 在桌面应用开发过程中重复使用已有的SVG图形,并且为封装一个以事件、属性、方法等面向对象方式提供接口 的SVG控件提供了一种可行方案。 关键词:Delphi语言;SVG动画;SVG控件封装 The Research of Delphi Interacting with SVG Animation LI Guo-Wei,KANG Dong-liang (Zhengzhou Coal Mining Machinery Group Co,.Ltd.Zhengzhou 450000,China) Abstract:This paper studies the relation of SVG,HTML,COM and Delphi,and proposed a method for Delphi interacting with SVG.The main purpose is reuse existing SVG graphics in Delphi desktop application development,and provided a feasible solution of how to package a SVG control which has interfaces in event,properties,methods,and other object— oriented approach. Key words:Delphi language;SVG animation;SVG control package 1 引言 在Delphi中开发一个动画组件需要一定的编程功底并且 需要对Windows消息和Delphi的消息处理机制有较为深入的 理解。另外,在组件发布后,如果需要对组件进行修改,则 必须重新编译并安装组件。如果能够将网页中的SVG动画应 用到Delphi中,就可以在Delphi中通过开发SVG图形的方 式开发动画(尤其是交互式动画),并且对SVG进行灵活控 </body> </html> 从上面代码中可以看出,TWebBrowser使用Embed标签 内嵌了指定的SVG文件。 3 Delphi调用SVG内部函数 Delphi可以调用HTML文档中的函数。无法直接调用 HTML内嵌的SVG文档中的函数。但HTML可以调用SVG文 档中的函数,因此Delphi可以通过HTML间接地调用SVG内 部函数。从上一节可以看到,用TWebBroswer直接打开SVG 文档,TwebBroswer会创建一个HTML文档来包含它,这个 HTML文档便是Delphi和SVG之间的桥梁。 3.1 Delphi调用HTML函数 制,从而将SVG的优点与Delphi的优点相结合,提高软件开 发效率。 2在Delphi中显示SVG图形 要在Delphi中显示SVG图形.无需按照SVG规范重新开 发出一个控件。用来解析并显示SVG图形。Adodb SVG View. er是Adodb公司针对SVG开发的一个ActiveX控件,IE浏览 器本身没有对SVG提供支持,而是通过Adodb SVG Viewer来 自动创建的HTML文档中没有任何函数,但是为HTML 中的JavaSefipt函数提供了一个执行环境,在Delphi中可以通 显示网页中的SVG图形。Delphi中自带了TWebBrowser控件, 该控件同IE一样,使用MSHTML内核解析HTML文档,使用 Adodb SVG Viewer显示HTML文档中的SVG图形。因此在 过下面的语句使一段JavaSeript代码在HTML环境中执行。 Var Doc:IHtmlDocument2: HtmlWnd:IHtrnlWindow2; ExecStr:string; begin Doc:=WebBrowser1.Document as IHtmlDocument2; Delphi中.可以使用TWebBrowser控件显示SVG图形。 在Delphi中用TWebBrowser控件打开一个SVG文件时, TWebBrowser会在内存中创建一个HTML文档,并将指定的 SVG文件嵌入到这个HTML文档中。然后再打开HTML文档, SVG图形便在TWebBrowser中呈现出来。下面是用TWeb. Browser打开E盘下的一个circle.svg文件时,TWebBmwser自 动生成的HTML代码 <html> HtmlWnd:=Doc.parentWindow; ExecStr:= TestFunc(1,2) ; HtmlWnd.execScfipt(ExecStr, JavaScript ); 作者简介:李国威(1987一),男,助理工程师,学士,研究 <body leftmargin=0 topmargin=0 scroll=no> <embed width=100%height=100%fullscreen=yes src=” file:,,JE:/circle.svg”> 方向:矿山自动化技术;康栋梁(1984一),男、助理工程 师,硕士,研究方向:矿山自动化技术。 收稿日期:2013—12—28 蔷 

ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES end; 人工智能及识别技术 及其他自定义事件,这些事件的参数个数和参数类型也不尽 相同。所以不能像在Delphi中定义事件原型那样定义每一个 SVG事件。但可以使用一个统一的事件模型来定义所有的事 件,下面的代码提供了一种思路: procedure notif ̄ SVGEvent( const eventSrc:WideString; const eventType:WideString; ExecStr变量是需要在HTML中执行的语句,可以是HTML 中的一个预定义的JavaScript函数,也可以是一段JavaScript 代码.HtmlWnd.execScript函数的作用是让ExecStr在HTML 环境中执行。 3.2 Delphi调用SVG函数 需要指明的是.在SVG文档的<script></script>部分声明的 全局变量、函数都将成为SVG文档的window对象的一个属 const eventInfo:WideString);safecall; 性。在HTML中,可以通过SVG元素的window对象使用这个 参数说明: 属性。 问题的关键是如何在自动生成的HTML中找打这个 SVG元素。从前面自动生成的HTML文档中可以看到,SVG 是HTML文档中唯一的embed元素,所以使用下面的代码 就可以找到SVG对象,并且给它指定一个Id值,方便以后 使用。 Var ele:IHTMLElement; Doc:IHtmlDocumen ̄; Begin Doc:=WebBrowser1.Document as IHtmlDocument2; ele:=Doc.embeds.item(Null,0)as IHTMLE1ement; ele.id:= SVG ; //给SVG元素指定一个id值: “SVG” end HTML语法允许直接使用元素的Id值来代替getElement— ById 0函数的返回值。假设SVG文档中有一个名为“Func1” 的函数。可以通过下面的语句调用“Func1”函数。 ExecStr:= SVG.window.Funcl 0 ; HtmlWnd.execScript(ExecStr,"JavaScript ); 在Delphi中调用SVG内部的JavaScript函数,只需在调 用函数前添加一个前缀“SVG.window.”即可,因为ExecStr是 在HTML的环境中被执行的。到此为止,已经可以成功地在 Delphi中调用SVG内部的函数了。 4 SVG事件传递到Delphi SVG完全支持DOM,本身就可以响应用户的鼠标键盘事 件和一些DOM事件,SVG文档可以处理一些内部事件,但是 还有一部分事件需要通知到外部,由Delphi进行处理。HTML 在提供了一个运行环境的同时,也提供了一个重要的扩展接 口(window.externa1),SVG文档中的函数可以通过该接口调用 外部函数。 TWebBroswer在在初始化时会向自己的控制站点查询是 否实现了IDocHostUIHandler接口,如果控制站点实现了IDo. cHostUIHandler接口,JavaSeript脚本在使用Windows.external 对象时,就会使用IDocHostUIHandler接口中的GetExtemal方 法获取到Windows.external对象。要对HTML进行扩展,必须 自己编写一个COM对象并注册到系统中.在IDocHostUIHan— dler接口中的GetExtemal中将这个COM对象作为GetExtemal 函数的返回值,当SVG内部的事件触发时,SVG就可以通过 Windows.extenral将事件传递到这个自定义的COM对象了。 由于SVG事件众多,包括鼠标键盘事件、DOM事件,以 (1)eventSre:事件源,用字符串表示,可以是一个内部 的SVG图元、自定义信息。 (2)eventType:事件类型,用字符串表示,例如 “onClick”、 “onMouseMove”。 (3)eventlnfo:事件附加信息,例如当onMouseMove事件 发生时。eventlnfo可能是“x=100,y=100,shift=ctrl+alt”。 自定义的COM对象提供上述notifySVGEvent函数供SVG 调用.SVG将事件通过notifySVGEvent函数传递到COM对象 中后.COM对象需要在notifySVGEvent函数内部再次调用 Delphi函数,将事件传递出去。在Delphi看来,接收SVG事 件就和接收其他的普通Delphi控件的事件一样。所以,自定 义的COM对象必须是一个可连接的自动化COM对象(关于 如何编写可连接的COM对象,请参考相关书籍,这里不再赘 述),因此,必须在Delphi中编写一个事件接收器,并注册到 COM对象中,当COM对象被SVG调用时,COM便可以将事 件接收器将调用传递到Delphi中。 经过上述讨论,可以得出在Delphi中与SVG交互的基本 原理.如图1所示,Delphi通过Adodb SVG Viewer显示SVG 文档,SVG文档通过external(自定义的COM对象)调用Del。 phi中的函数。 图1 Delphi与SVG交互原理 5结语 介绍了一种在Delphi开发环境下与SVG进行交互的方 法,该方法在其他编程语言中同样适用。按照介绍的方法, 完全可以编写出一个SVG控件并注册到Delphi的控件面板 中。以后,在Delphi中操作SVG图形就像使用普通Delphi控 件一样简单,其复杂的通信流程全部隐藏在了控件的内部。 在桌面应用和网站开发同时进行的项目中,只需开发一次 SVG图形.即可在两个项目中同时使用,节约了系统的开发成 本。另外,也为在Delphi中开发动画提供了一种思路,先将动 画制作成SVG文档,然后使用SVG控件加载并与之进行交互。 f下转第79页) 

ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES 外部提供的插1:3进行融合,保证可以让艺术创作得更加轻松。 虽然除了PhotoShop之外,还有很多其他的软件都可以处理图 片.但是大家都没有将其称为插件扩展技术,不同的软件都 具有不同的功能,需要不断地进行学习,才能学会安装插件。 通过对文件夹中的文件进行添加,可以在进行艺术创作时, 人工智能及识别技术 而言是一种浪费,无法保证真正利益的实现。此外,因为 PhotoShop在功能上的局限性,使得其无法进行不同格式遥感 数据的处理.这样对于资源就会有较大的占用空间,数据量 较大,这样就不能在图像处理中有所应用,这些都是Photo— Shop需要进行改进的地方。为了让PhotoShop软件能够更好地 在图像处理上进行应用,可以充分利用其插件扩展功能,以 让自己变得更加便捷,从而让制作效率得到明显的提升。不 同的插件扩展技术在图片处理的过程中,可以进行简化,保 证插件能够在制作效果上有所保证。例如从事影视制作业或 是广告相关的行业都需要利用到PhotoShop的扩展插件技术, 它的功能将会保证图片处理的质量,保证不同的插件具有不 同的扩展功能.这样才能在三维场景中进行穿插,保证现实场 景的制作。这在多个领域上都有很深入的研究和应用。 2.2让各方人力资源和技术资源得到互补 一便更适合图像专业遥感影像处理的需要[61。经过多次试验,其 中间插件开发可在SDK开发平台下进行。 通过插件扩展技术对PhotoShop在图像处理上的作用,主 要表现在图像处理能够弥补一些缺点,可以由技术人员进行 自主操作而完成更新。因为PhotoShop对于数据存储空间会有 定的限制,导致在一些功能上无法实现处理,这样一旦数 据较大.就不能进行兼容.会让色彩处理等相关的PhotoShop 操作无法进行。因为PhotoShop在软件的操作上容易出错,这 样就会出现漏洞,导致无法进行恢复,不能根据地理位置进 无论从功能的角度上进行研究还是从外观上,任何一个 图像处理的软件都不能完全令人感到满意。因为无法保证可 以进行灵活而又完美的使用。通常来说,任何一个软件都是 由公司进行单独研发,这样由于人力和时间有限,导致在研 行定位。但是PhotoShop可以在不同软件中进行交叉使用,进 而节省了软件数据之间的交换,能够节省工作时间,提高工 发的过程中,软件都会有局限的功能和更新速度。正是因为 这样,很多软件都会在外部提供一些插件的插口。这样才能 作效率,尤其是图像具有较多的数据时,更是具有很大的便 利。PhotoShop在图像处理上具有一些弊端,但是利用插件扩 展技术,就能够解决这些问题,并有很好的应用效果。 伴随着科学技术和软硬件技术的发展,PhotoShop软件对 图像的处理应用将越来越广泛.尤其是PhotoShop软件中插件 扩展技术能够充分发挥其优势,为PhotoShop软件在处理图片 上提供了更加广阔的应用前景。作为强大的影像和图片处理 平台.PhotoShop因为其所具有的性价比,受到很多专业人士 保证插件扩展技术可以和别的软件进行融合,从而对自身的 功能和更新做到较为完善的处理。通过这样的操作之后,可 以让软件具有更好的竞争力.能够保证人力资源和技术资源 得到充分的互补。对插件进行研发的公司或是个人在进行技 术更新时,就不再需要更多的时间和精力去完善自己的运行 平台,也不需要编制新的软件和系统,能够借助于他人的软 件而进行运行。这样做可以提升工作的效率,保证可以集中 精力完成某项功能,并对这些功能进行改善和加强。在开发 全新功能的过程中,需要利用一些插件扩展技术,从而让自 的青睐,可以进行简单的操作完成图像的处理工作。不仅仅 具有较高的工作效率,还能比其他软件具有更好的处理效果, 因此在很多方面使用广泛,功能不可替代。因此插件扩展技 术在PhotoShop软件中,需要对算法进行设计和优化,保证实 己的软件可以获得应用的市场份额,保证软件能够继续在市 场上存活下去/5]。这样做或许会影响到软件平台的开发,让很 多开发商无法得到自身的利益.不能进行自主的软件扩展技 术的研发,而让自己具备了很高的竞争力。虽然这样,但是 并没有影响到自己在市场上的竞争力.反而让自己也获得一 部分的利益,这是一种双赢。插件扩展技术可以帮助开发商 扩展功能的同时,赢得了在市场存在的必要条件、利润,这 也是插件扩展技术的生存之首。 现图像的处理,提高T作效率。 参考文献 [1】黄凤坡.Authorware交互功能介绍及简单的实例设计『J]. 赤峰学院学报(自然科学版),2011,(02). [2】刘洋.多媒体课件界面设计与PhotoShop的探讨【J].科技 信息(科学教研),2012,(17). [3]张胜云.PhotoShop对其他图形图像处理软件的支持『J]. 3插件扩展PhotoShop软件在图像处理中的应用 作为强大的图像处理软件.PhotoShop是一个尤为专业的 图片处理平台,其插件扩展技术在很多方面都有深入的应用。 在图像处理方面上,利用差价扩展PhotoShop软件尤其是色彩 安庆师范学院学报(自然科学版),2011,(04). 【4]张志明,段红玉.PhotoShop在网页制作中的应用IJI. 科技信息(学术版),2010,(10). 【5]于洪苹,程朋根,李永胜.PhotoShop软件在遥感影像处 理中的应用【J】.测绘科学,2011,f03). 调整、影像拼接方面具有不可替代的功能。但是因为图像感 应的原因,其功能也具有一些局限性.例如.不能利用Pho— toShop软件进行数据的处理,无法进行再次利用,这对于资源 .【6】丁杨.浅谈如何上好高职PhotoShop图像处理课程【J】. 教育教学论坛,2011,(05). . .S .S . 屯.S止.S L .驰 .址 址 . L S止.S屯.址.S屯.S . .S .S 址 址 .S .S (上接第77页) [2】潘爱民.COM原理与应用. 北京:清华大学出版社, 参考文献 【1]Eric Harmon.Delphi COM深入编程.北京:机械工业出 版社.2000. 2005. ipt权威指南.北京:机械工业出版社, [3] 弗兰纳根.JavaScr2012. 

Delphi与SVG动画进行交互的研究

本文发布于:2024-02-06 01:36:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170715456259175.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进行   事件   技术
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23