【PowerBuilder 做的史上最强的矢量画图软件(VISIO也要低头)】分享给互联网技能从业者学习和参考。
谁说PowerBuilder 做不了图形处理,现在这个图形软件就可以是用PB做出来的,而且运行稳定与快速,如果配以PB强大的数据库功能,那么就可以做出各种组态软件,而且辅以报表的强大功能,那么在做开发电力,煤炭,化工,仿真,自动化监控,组态,工业监控软件,图形建模,图形管理,图形分析,GIS系统,CAD制图,工作流,中文表格,表单,工程绘图等应用。方面谁还能匹敌呢?
已经有许多公司用这样的模式来开发PowerBuilder 的图形应用:很多电力公司与工业监控公司。 非常方便地建造基于图形的界面,制作各种图形元件,实现图形管理,图形建模,制作监控系统,表单系统,绘图系统,流程设计,CAD软件等。
PowerBuilder 做的史上最强的矢量画图软件(VISIO也要低头)
图形文件是XML的,可以在WEB上使用。
有了这东东,就可以敢接一样图形相关的项目了,这也是一个自己能力应用的机会。
图形的特点:
图形文件和图形库是统一的 XML 格式
一般图形软件的图库不外乎采用以下几种技术:
① 程序中自带图库。这适用于特定的专业领域,如果需求发生变化,程序必须改变,目前许多自行开发图形系统的软件公司采用这种技术,一来需求相对固定,二来实现也较为简单,这种技术的缺点在于,以后需求发生变化,程序经常需要修改。
② 专门做一个图库设计工具软件,图库有专门的格式。这个已经比前面进了一步,起码用户似乎可以“自定义图库”了。给用户的感觉要好一点。但是这种技术的缺点在于,图库中的图形都是“组合图形”,只能做一些简单的状态变化。而象曲线图、饼图、棒图、仪器仪表等图形就无法实现了。
③ 插件技术。这个就更进一步,目前在许多工业组态软件的图形系统中采用。为了实现上述各种复杂的组合图形,用外部程序辅助实现,有的是自己定义接口方式,好一点的采用 ActiveX 标准接口。这种技术的缺点在于,你常常需要很多外部插件,如果厂家没有提供某个图形,就需要请厂家帮忙解决,或者利用厂家提供的接口开发规范用 C++ 等语言编写插件。可想而知,这种技术几乎无法应用于互联网。而且用户受限于自己的开发水平,无法真正创造他想要的东西。此外,如果厂家采用标准 ActiveX 技术的话,还有一个先天性缺陷,那就是,这种外部插件无法自由缩放、自由旋转,无法和其他图形协调存在,另外还有整体打印方面的问题。
④ 文档格式。许多厂家的图形文档采用自行规定的二进制格式,这种格式的文档读取速度较快,但是安全性、可维护性很差。在经常性的修改中,难免遇到电脑停电等事故,恢复正常打开电脑后,文件却可能无法读取了,因为是二进制格式,就不知道哪里出了问题,自从有了XML文档格式,采用它存储数据就成为最佳的选择方案,你用其他 XML 阅读软件甚至记事本就可以轻松编辑这种文档。
⑤ Visual Graph 采用图形文档和图库文档统一的 XML 格式,你可以任意自由地画图,任意设计属性、函数、事件,这样相当于给图形赋予了生命,设计好的图形文件马上就可以被当作图库来使用,这样通过多层嵌套,就可以设计非常复杂的图形出来,这样紧凑的结构、巧妙的设计,也只有 Visual Graph 才有。
2.一个文档包括多个页面图形
你可以在一个文档内包含多个画面,而当这个文档被用作图库的时候,每个画面又被当作一个个元件来使用了,整个系统形成完备的整体。
3. 页面支持多图层,图层可以隐藏或锁定
画很大的图时,有可能需要建立多个图层,例如地理图上的道路、电力设施、水管、商店、政府部门等可以分别设定在不同的图层上,图层其实就是页面。
4. 基本图形只有三种(文字、形状、线条),却可以制作种类繁多的元件
一切复杂的图形元件都来自于这三类图形,基础图形越少,整个系统的架构越灵活可靠。如果把各种专用图符等放在系统内部,当作不同的类别实现,这样,系统结构就很松散而且难以学习了。
5. 可以进入元件内部编辑其细节
需要专门的图库编辑软件麽?不需要,只要在Visual Graph集成环境中,就可以随时进入元件的内部,修改其细节。
6. 线条编辑,允许插点,删点,画曲线,直线,独特的副线功能
允许在线条上插入顶点,删除顶点。线条的每个顶点除了有 x 和 y 两个坐标值以外,还有一个顶点属性值,用来描述这个顶点的画法。通过简单改变顶点的属性,一条折线可以变成曲线,可以变成两段不相连接的折线。此外,软件还可以通过添加副线,画出花样繁多的线条,如铁路线、长城线、国界线等等。
7. 直接在画面上编辑文字,文字自由旋转
文字编辑方式自然,即使文字单元有旋转,编辑方式不变,甚至输入光标也会跟着旋转。
8. 无数次的 Undo 和 Redo
能够对绝大多数操作进行几乎无数次的撤销和恢复,根据内存状况采用不同的调度策略,许多方面,尽管用户可能很少用到,但都严格地保证了安全。
9. 内置专门的 Visual Graph 图形语言
内置专门为图形系统设计的纯面向对象脚本语言,结构简单,语法只有简单的几条,变量也不需要定义,直接任意赋值。比起其他流行的编程语言,更加简洁明快、高效。
10. 每个图形允许定义背景图片,图片可以透明、缩放
每个基本图形都有图片和网纹属性,二者结合在一起,可以实现图片的拉伸、平铺、透明等。整个视图文件也有同样的背景图片和网纹设置。
11. 和许多绘图软件图形互相拷贝粘贴,可以编辑 EMF 格式的图形
EMF 是各种矢量图形软件相互交换格式的一种标准图形格式,象 Word , Visio , Autocad,Coreldraw 等都支持 EMF 格式的存取。 Visual Graph 可以把这些软件的图形拷贝后粘贴进来进行编辑,也可以把图形拷贝到这些软件中去进行编辑(特殊粘贴)。
12. 文档打印纸可以自由设定大小和缩放比例
打印无级缩放,多大的图形都可以放在一张纸上打印,而打印效果直观地显示在画面上,只要显示打印纸,就可以清楚看到打印纸的位置,你可以用鼠标改变它的位置和大小。打印纸越小,相对来讲打印出来的图形就越大,反之,打印纸越大,打印出来的图形就越小,而所包括的图形也更多。不需要模拟显示。
13. 打印和设备无关
画面打印情况只与打印纸、图形的相对位置有关,与设备无关。所有页面共用同一张打印纸。
14. 支持图形分组
允许建立若干个图形组,这些组被保存进文件,这样可以方便地对图形进行分组管理和编程。例如,在一幅地图上,把所有房子建立一个数组,把所有公用设施按照类别分别建立一个数组等。
15. 多种连接线,十分灵活,可以建立图形间的拓扑关系,自由添加连接点
有直线连接线,曲线连接线,平直连接线。元件内部可以自由设置任意个数的连接点,图形的连接点数目以及每个连接点关联的图形、连接点的位置都可以用程序访问,也可以用程序设置两个图形相连接。可以编写图形拓扑分析程序。
16. 多种箭头风格,并可以任意自定义箭头
内置常用几种箭头风格,满足大多数时候的需要,如果箭头不够,可以修改箭头库文件(arrows.tbl),实际上,箭头库也是图形文件,也可以在 Visual Graph 中进行编辑。
17. 自定义线型
线条有多种表现形式,可以修改每种线型的具体形状。
18. 自定义网纹
图形填充图案全都可以自行设计,还有透明网纹、过度填充网纹、图片填充网纹等,能够满足绝大多数需要,网纹可以自定义样式。
19. 支持多种网格类型定位,但优先连接关系定位
图形可以通过网格方便定位,默认情况下,图形左上角和网格保持对齐,如果图形在某处有连接点,优先把连接点放置在网格上。这也是为了更方便地绘制拓扑图。
20. 支持文字和其他图形两种对齐方案
文字是不允许用鼠标拖动重叠的,我们认为文字重叠就互相看不清楚了,所以就尽量防止这种状况的发生。所以操作若干文字单元左对齐就不会出现象其他图形那样堆叠的情况,而出现一种类似表格操作的形式。
21. 图形支持任意角度自由旋转,旋转中不改变图形其它逻辑
任何图形元件都可以任意角度自由旋转。旋转后,图形的逻辑关系不变,运算程序能够正常运行。例如棒图、饼图、曲线图、甚至页面上所有图形一起都可以随意旋转而正常工作。过渡填充、图片、箭头、文字标注、文字光标自动旋转。
22. 基本图形、图形元件均可以自定义文字标签
普通的矩形、椭圆等形状以及线条都可以添加一个文字标签,线条上的文字标签有多种排版方式,元件可以定义内部哪些文字单元是标签。作为标签的文字单元可以直接编辑,不用进入封装好的元件内部。
23. 自定义多类型存储属性(整数、小数、逻辑、字符串)
当程序员想给图形添加一些特定的数据时,可以给这个图形随便增加自定义属性,对自定义属性的读写、存储等操作和对固有属性没有区别。
24. 自定义任何属性,类似流行编程语言中“属性”的概念
把一些流行编程语言( Delphi 、 C# 等)的“属性”概念引入到 Visual Graph 中,从而使得系统变成了一种似乎无所不能的面向对象编程语言。你只需要简单地修改一个属性的值,就可以驱动图形做任何复杂的变化。
25. 自定义函数(私有、公有函数)
既然有脚本,就离不开自定义函数,函数按照作用域的不同,分为私有函数、公有函数、引出函数三种,如果一个函数只想被内部的其他图形访问,可以使用私有函数,如果允许外部图形访问,可以使用公有函数,如果这是一个触发事件,则可以使用引出函数。这些非常符合一般面向对象编程语言的习惯。函数与过程的区别仅在于是否在 return 后面有返回值。函数参数没有显式的类型,会根据调用者的参数决定。这样设计的结果,使得脚本在形式上更加简洁。
26. 众多的图形操作事件,例如在鼠标点击、移动、图形缩放、创建、删除时触发
每个图形都有自己的事件,例如,在运行状态下,当鼠标单击时,会优先执行最上面那个图形的鼠标单击事件中的脚本程序。图形创建时、删除时、绘制后、鼠标移入移出等都有相应的脚本事件。如果程序员只想把 Visual Graph 当作一般控件使用,也可以利用控件本身的众多事件。这两套事件体系是不一样的,每个图形都有自己的事件,这些事件是 Visual Graph 内部规定的,而 ActiveX 的事件是图形控件整体的事件,遵循国际标准接口。
27. 无级别缩放,比例巨大,局部放大,整页、宽度缩放
图形任意放大和缩小 ,由于采用浮点数,放大很多倍后,可以精确编辑图形。整页、宽度缩放主要应用于报表场合,当画面上显示打印纸的时候,就会看到它的作用了。当图形缩放的时候,字体会缩放,但是线条的宽度可以设定是否缩放(环境设置),有的时候,放大以后要对细节进行编辑,应该设定线条宽度禁止缩放,而打印的时候,则应该使用线条宽度缩放选项。有一种线宽( 0 )被设置成无论如何缩放,都只是一条细线,这用来描述某些轮廓。
28. 图形可以设定是否打印
打印区域内的某些图形可能仅为了显示之用,并不想打印出来,则可以设置图形不允许打印。
29. 整体或局部图形导出 BMP 、 EMF 格式图片
常常会有这样的需求,选择一部分图形,允许把这部分图形生成图片。
30. 支持读取互联网服务器图形文件
直接读取互联网上的图形文件,无需下载。
31. 支持图形从内存或数据库读写
整个 Visual Graph 文件是 XML 文档格式,程序员可以把文件存放在数据库中,进行读写。 每个图形也有自己的XML格式,可以单独存取。
32. 支持移动图形到屏幕中间,滚动屏幕,手抓屏幕滚动
有一些有关屏幕操作的函数,帮助程序员更好地控制画面显示的内容。
33. 用程序或者脚本绘图
这也是基本功能,可以用脚本或者其他程序动态生成各种图形、页面、单元组、甚至图形之间的连接关系。
34. 支持标尺,允许自行设计标尺
Visual Graph 的坐标体系是逻辑坐标体系,默认的标尺上面显示的也是逻辑坐标值,也就是屏幕象素的坐标,如果用户的系统要求使用不同的坐标系,可以自行换算,主要是改用自己的标尺就可以了。关于如何制作自己的标尺,也提供源代码作参考。系统提供了两种坐标系,一种是以左下角为原点的,另一种是以左上角为原点的。
35. 图形锁定和解锁,按住 ALT 键可以操作加锁的图形
图形基本功能,锁定后的图形,不能简单地用鼠标选中和编辑。
36. 支持自定义提示窗口
每个图形(包括页面)都有一个 Hint (提示)属性,设置这个值,当鼠标在图形上面停留一会,在鼠标附近就会出现一个小窗口显示这个字符串,每个图形文件都内置一个提示信息窗口 HintWindow ,用户可以对此进行编程,例如在 HintWindow 上面画图。
37. 元件自定义连接点
元件可以添加任意多个连接点,连接点可以设定是主动连接还是被动连接。
38. 元件自定义调控点
在元件设计时,可以放置任意多个控制点,将来这些控制点将允许用户鼠标拖动操作,当鼠标拖动操作的时候,会执行 OnNodeChange 事件,在元件内写好这个事件的脚本程序,元件就可以按照你的意愿变化形状了。如果一个元件定义了两个以上的调控点,并且这些调控点又同时是连接点时,这个元件将来不会出现选择框。
39. 支持各种仪器仪表、刀闸、开关、信号灯开发
给这些设备图形添加自定义属性,仪器仪表可以添加最小值、最大值、当前指针值等属性,改变这些属性,仪器仪表就会发生变化(例如指针旋转)。刀闸、开关可以添加开关属性,改变这个属性,开关的样式也发生相应的变化。信号灯可以添加当前状态属性,允许根据属性不同,信号灯的状态发生变化。这些在其他图形软件里面非得使用插件才能实现的功能,在 Visual Graph 看来,却是如此简单。
40. 支持各种按钮的开发
由于图形有鼠标左键按下和放开的事件,只要在鼠标按下的事件里让图形产生一个变化,在鼠标放开时恢复这个变化就可以了。
41. 支持曲线图、棒图、饼图开发
系统自带了这方面的例子或者图库,可以参照使用,自行修改。即使图形多么复杂,都不需要插件。
42. 支持报表开发,表格高度智能,移线、合并、插入或删除表格行列,多种表格边框
Visual Graph 对表格的概念有一个突破,所谓表格,就是若干文字单元拼凑而成的一组图形。可以移动里面的线条、划线分割、合并、插入或者删除表格行列,整体修改一部分表格的边框等等,这些操作由系统内部通过一定的智能规则判断实现。其中的任何一个文字单元都是独立的个体,这样,对于程序访问非常有利。如果熟练掌握了 Visual Graph,就不需要再用其他报表控件,尤其是在互联网上使用时,与图形界面自成一体,非常节省资源。
43. 允许混合编程,互相调用,不仅您的程序可以操控 VG 的一切技术,而且 VG 的脚本可以调用执行您的任何程序
在 Visual Graph 中出现的任何图形、任何属性、任何函数都是可以在自己程序中访问的。
另外, Visual Graph 可以访问程序员自己语言中的函数,这是一个非常特殊而且重要的功能,因为现有的脚本语言不可能穷尽所有的功能,事实上,它是一种非常简单的语言,所含功能性的函数很少,因此,在某些情况下,你可能需要扩充这种脚本语言的功能。例如日期访问、数据库访问等等。使你不用担心将来功能不够怎么办的问题。
44. 支持扩充功能函数
Visual Graph 可以调用外部函数库中的函数,例如 Windows API 函数、DLL函数等。
45. 可以制作对话盒、子窗口、弹出式窗口、菜单等窗口元素。
在很多情况下,用 Visual Graph 做这些窗口元素比起用编译语言做有更多的优势,因为它不是编译语言做死的,而是外置的,易于维护修改的,这样,以后可以轻而易举地变换软件的功能。只要制作好足够多的图形基础控件,甚至能做应用软件开发。
46. 元件的链接和嵌入
如果图上有大量相同的图形(比如很多刀闸),图形采取链接方式比较好,这样能够大大减少文件的体积,更快地载入文件。图库改变后,下次载入图形文件也相应会反映这种改变。
47. 提供图形的全部 COM 接口
COM 接口能够方便程序的编写,接口属性和函数在基本形态上和 Visual Graph 内部的脚本语言完全一致,这样有利于学习和记忆。只可能因所用编程语言的不同,而有些形式上的改变,例如在 VC 中,没有属性这个概念,所有的属性都被变成 Get 和 Set 函数了。
48. 可以设定图形的透明度
每个图形或者元件均可以设置透明度。
49. 可以修改为数众多的系统参数
系统字体、光标形状、箭头、线型、网纹等许多重要参数均可以改变(注意不是属性的改变,而是常量的改变),改变系统参数后,对所有图形均起作用。
50. 根据自己的需要选择合适的图形显示驱动程序
通过设置,可以使用不同的图形显示驱动程序,在速度或者精度等方面达到最佳平衡。
51. 包括一个功能非常齐全的属性列表控件,这样对于图形程序的开发就更方便了
只通过一条简单的命令,就可以把图形和属性列表控件联系起来,在属性列表控件中对图形进行全方位的编辑。这个属性列表控件也是一个图形文件,用户熟练以后可自行编辑修改。
52. 支持界面设计、插件等
可以自由开发诸如菜单、工具栏、按钮、列表框、下拉框、检查框等 windows 界面元素。
53. 非常适合应用于互联网
软件发布包特别小(压缩以后只有 300k 左右),功能特别全,非常适合应用于互联网软件开发。