以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  [分享]visual graph专栏  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=73500)


--  作者:qindian
--  发布时间:3/25/2009 1:51:00 PM

--  [分享]visual graph专栏
严格听取版主建议,专门开设一个visual graph专栏,请各位技术人员支持。如有不对请提出,会尽快进行改。谢谢。
首先讲解一下visual graph的应用领域:
Visual Graph工业图形系统,此产品经过长期研发,包含了大量的创新技术,系统具有尺寸小(不到300K)、功能丰富、灵活性高、稳定可靠等突出优点,特别适合于WEB上的软件开发,是国产软件中比较罕见的精品,目前已经广泛应用于电力、煤炭、化工、仿真、通信、自动化监控、地理信息系统、报表开发等许多领域。
提供官方下载地址:http://www.visual-graph.com
一些典型用户列表: 国电自动化研究院,南京南瑞集团公司 南京东大金智电气自动化有限公司 深圳市国电信息技术股份有限公司 国电南京自动化股份有限公司 江苏河海大学电力软件有限公司 江苏常州东瑞电力软件公司 重庆跨越集团宏泰电力软件公司 北京高阳万为电力信息技术有限公司 南京四方亿能公司 深圳腾鹰软件有限公司 北京百联优力软件有限公司 杭州人和软件开发有限公司 昆明东电科技有限公司 杭州朗新软件有限公司


以下的贴子会经常更新。为下载的朋友提供一个入门的技术支持。


1。图库的使用

Visual Graph有强大的图库开发能力,而且使用非常简便,下面以VB中的使用为例:

一、在VB中建立一个新的工程,在左侧工具栏上按右键,选择菜单“部件”,添加Visual Graph控件。

二、在窗口上添加Visual Graph ActiveX Control控件,这个控件将用来画图。

三、再添加一个Visual Graph ActiveX Control控件,这个控件中的文件将被当作图库,我们把这个控件充分缩小,放到上面那个控件的下面。

四、在Load事件里写程序:

vgctrl1.Design ""

vgctrl2.Run "e:\vg\lib\电力设备.tbl"

这一句把vgctrl2中的图形文件当作元件库。

五、在窗口上插入按钮。在这个按钮的OnClick事件里面写:

vgctrl1.vg.NewUnit vgctrl2.vg, "垂直刀闸"

画图时,将从当前指定的图库中寻找“垂直刀闸”这个元件。

六、再放一个按钮,在这个按钮的OnClick事件里面写:

vgctrl1.vg.ActiveSheet.AddUnit vgctrl2.vg, "垂直刀闸"

七、运行,测试。


--  作者:qindian
--  发布时间:3/26/2009 9:48:00 AM

--  
有人下载试用吗,今天再来贴第二讲

元件的变形

在下面这个例子中,我们介绍如何对元件设计特定的变形方法。

先绘制三个矩形,排列如下:

这个图形是由两边的两个矩形A和B以及中间的一个矩形C组合而成。

把三个图形组合起来形成一个元件。

我们试着用鼠标拉伸一下这个元件,图形变成这样:

可见,元件的变形在默认状态下是内部各图形等比例变形的。

如果我们希望图形拉伸时变成下面这样,A和B不变形,只是B移位,C变形,应该怎么办呢?

在元件上方按右键,选择菜单“进入编辑元件”,在函数事件中找到OnResize事件,编写如下代码:

A.SetBounds( Left, Top, A.Width, Height )
B.SetBounds( Right - B.Width, Top, B.Width, Height )
C.SetBounds( A.Right, Top + Height / 2 - C.Height / 2, Width - A.Width - B.Width, C.Height )

这个事件中的程序,即使在绘图状态下也执行。当我们用鼠标拉伸元件,改变其大小的时候就执行上面的代码。

图贴不上。。。。


--  作者:qindian
--  发布时间:3/30/2009 10:53:00 AM

--  
第三讲       对选中的图形进行编辑

在VB中对选中的图形进行编辑

在设计绘图界面的时候,我们经常需要对选中的图形进行编辑。下面我们以VB为例,说明使用方法:

一、在VB中建立一个新的工程,在左侧工具栏上按右键,选择菜单“部件”,添加Visual Graph控件。

二、在窗口上添加Visual Graph ActiveX Control控件,这个控件将用来画图。

三、在Form_Load中写如下代码:

vgctrl1.Design ""
set d = vgctrl1.vg.ActiveSheet.AddUnit( 0, "circle" )
d.SetBounds 10, 10, 40, 40
set d = vgctrl1.vg.ActiveSheet.AddUnit( 0, "circle" )
d.SetBounds 60, 10, 40, 40
set d = vgctrl1.vg.ActiveSheet.AddUnit( 0, "circle" )
d.SetBounds 110, 10, 40, 40

四、在Visual Graph控件的OnSelectChange事件中写如下代码:
dim g as IGroup
dim d as IUnit
dim s as string
set g = vgctrl1.vg.ActiveSheet.Selection
s = "一共选中了:" + CStr( g.UnitCount ) + "个图形。"
if g.UnitCount > 0 then
s = s + "其中第一个选中的图形是:" + g.Units( 0 ).Name
end if
Caption = s

五、运行这个程序,用鼠标选中画面上的两个图形。


--  作者:qindian
--  发布时间:4/1/2009 10:58:00 AM

--  [原创]
用的过程中遇到什么技术问题的话,请发到论坛里来,会即时帮您解决
第四讲
可移动标签

观察下面这个元件,它有一个文字标签,标签上有一个点,鼠标拖动这个点,可以改变标签的位置,标签和调控点都在图形选择框外面。

下面说明制作方法:

一、在集成开发环境中新建一个图形文件,画面上放一个“水平开关”元件。该元件在系统Lib子目录下的“电力设备.tbl”里。

二、这个元件没有带文字标签,我们想办法改进一下它。

三、在元件上按右键选择“编辑元件”,打开一个新的窗口,我们现在已经“进入”元件的“内部”了,现在我们看到的页面就是外面看到的那个“水平开关”。

四、在左侧图库列表的基本图形中选择文字单元,鼠标在画面上单击添加一个文字单元,(这个文字单元是无边框的,它的Border属性为0,如果画的时候鼠标在页面上拉框,则创建的文字单元有边框)

五、在左侧图库列表的基本图形中选择线条单元,鼠标到上面这个文字单元的中间按下左键再立即按下右键,则在文字单元上面添加了一个只有一个点的线条Line3。

六、在右侧的函数事件中找到OnNodeChange,双击,编写下面的代码:

Text1.MoveTo(Sender.X[0]-Text1.Width/2,Sender.Y[0]-Text1.Height/2)

七、选择文字单元和线条单元,单击工具栏上的“锁定”。锁定的图形在图元中将不被选中。

八、选择菜单“文件/保存”,其实这里的保存并非保存到文件或硬盘,而是更新了元件。接着,关闭窗口。

九、测试这个元件,我们看到元件上现在带了一个文字标签,移动元件,标签跟着移动。标签上面有一个黄色的菱形,拖动,标签跟着移动。


--  作者:qindian
--  发布时间:4/8/2009 11:16:00 AM

--  
技术师们如果 有试用的,遇到问题或者想了解哪方面的问题都 发到这里来
今天第五讲
在运行状态下用鼠标拖动图形

操作步骤如下:

一、在集成开发环境中新建一个文件,然后在页面上画一个圆( circle1 )。

二、在页面的 Initialize 事件中添加代码:

FStartX = 0

FStartY = 0

三、在圆的 OnLButtonDown 事件中添加代码:

Sender.Tag = 1

FStartX = X

FStartY = Y

四、在圆的 OnLButtonUp 事件中添加代码:

Sender.Tag = 0

五、在圆的 OnMouseMove 事件中添加代码:

if Sender.Tag = 1 then

Sender.MoveBy( X - FStartX, Y - FStartY )

FStartX = X

FStartY = Y

end if

六、选择菜单“程序/运行”。鼠标即可拖动这个圆。


--  作者:qindian
--  发布时间:4/15/2009 10:06:00 AM

--  
也不知道大家在用了没有,怎么没人帮忙顶呢!!!
不管了,今天进行第六讲
OnCommand事件

除了AddFunction允许Visual Graph调用自己程序中的函数外,Visual Graph还提供了另外一种机制,就是DoCommand和OnCommand配对回调机制。

这种机制对于在C#、VB.net、Javascript、VBScript中使用Visual Graph有很大的帮助,因为,这种情况下,AddFunction是不能使用的。

DoCommand是脚本语言中的函数,它有两个参数,第一个参数是图形单元,第二个参数是任意字符串。函数执行后,这两个参数将被传递给OnCommand事件的两个参数。

下面我们以VB为例,说明这种机制的实现方法。

一、在集成开发环境中,新建一个图形文件,并在页面上放置一个椭圆,在椭圆的OnClick事件里面写下面的脚本:

Sender.DoCommand( "Hello" )

二、把文件保存为“e:\test.tbl”

三、打开VB,新建一个工程,然后在主窗口上放一个Visual Graph ActiveX控件。

四、在窗口的OnLoad事件中,运行那个Visual Graph图形文件。

Private Sub Form_Load()
vgctrl1.Run "e:\test.tbl"
End Sub

五、在控件的OnCommand事件中写:

Private Sub vgctrl_oncommand( ByVal AUnit As vg.IUnit, ByVal ACommand As String )
MsgBox AUnit.Name + " " + ACommand
end sub

六、运行这个程序,鼠标单击椭圆,即执行上面的那个事件OnCommand。


--  作者:qindian
--  发布时间:5/14/2009 11:34:00 AM

--  
好像好久没有更新了,呵呵,大家也没人帮忙顶
--  作者:qindian
--  发布时间:5/25/2009 3:44:00 PM

--  
Microsoft Visio和Visual Graph比较
  都是绘图工具,都包含非常丰富的图形元件库。图形之间都有拓扑关系。都支持脚本编程。两种软件的图形都支持互相拷贝。前者的每个图形元件库都是外挂的插件,整个系统庞大,适合办公使用;后者的每个图形元件库都是普通的图形文件,整体尺寸小,适合web使用。前者只用来绘图,后者还可以运行。

Macromedia Flash和Visual Graph比较
  都是对矢量图进行操纵,图形可以编程,也可以动作,都支持脚本语言,都有专门的播放器。前者侧重于界面效果,可以开发动画;后者侧重于实际行业应用,图形可以驱动,发生状态变化,但不是动画。可以处理大型矢量图形、中文表格等,图形之间建立拓扑关系。

Autocad和Visual Graph比较
  都可以对矢量图形进行编辑,前者适合行业制图领域,提供的画图方法很方便。后者适合软件公司开发自己的绘图系统,一般是可控的、面向对象的图形系统。

组态软件和Visual Graph比较

  都能对矢量图进行操纵,都支持开发和运行。都可以做工业人机界面,都可以开发工业应用。前者是应用软件,面向最终用户,后者是开发平台,面向软件公司。前者设备图库都需要专业人员开发,后者设备图库只是普通的图形文件,前者适合做应用,后者适合在web上发布。

报表组件和Visual Graph比较
  都可以制作报表,都有设计和预览,表格有丰富的操纵方式。前者一般均是傻瓜式报表,模板均以规定好,矢量图形能力弱,后者适合软件公司开发自己的报表系统,模板需要自己设计,适合做含矢量图形的报表、中国式的报表或一般软件无法完成的报表。


--  作者:qindian
--  发布时间:5/27/2009 9:44:00 AM

--  
看的朋友不少,有没有试用呀?有问题的可以发表到论坛里,及时帮你解决???
--  作者:qindian
--  发布时间:5/31/2009 10:00:00 AM

--  
调试元件

Visual Graph集成开发环境提供了完备的调试功能,下面我们来学习如何使用。

一、在集成开发环境中新建一个画面,在画面上放一个气温计元件和一个按钮元件。前者在Visual Graph所在目录的Lib子目录下,“监控设备.tbl”元件库文件中,后者在“按钮库.tbl”元件库文件中。

二、我们看到气温计有一个自定义属性Value(红色),更改此值,气温计的液位就会上下变化,但是此属性有一个问题,那就是如果把Value值改成120,液位会突破气温计顶部,下面来调试这个错误。

三、在按钮的OnDblClick事件里面写:气温计1.Value = 120,选择菜单“程序/切换断点”,在这一行程序上设置一个断点。

四、选择菜单“程序/运行”,然后双击按钮,程序运行到断点,画面切换到断点处,此时调试窗口同时出现。按“F7”或选择菜单“程序/跟踪执行”,断点到达气温计1的私有函数SetValue中,此时我们发现,原来AValue没有限定取值范围。

五、选择菜单“程序/结束程序”,下面开始修改气温计1的SetValue函数。

六、在气温计1图形上按下右键,选择菜单“编辑元件”,进入元件内部,在页面空白处单击左键,表示选择整个页面。

七、在右侧“函数事件”里选择“SetValue”,双击,进入代码区修改。添加对AValue参数的范围设定。

if AValue >= 0 and AValue <= 100 then
FValue = AValue
Rect3.Height = Rect1.Height * FValue / 100
Rect3.Top = Rect1.Top + Rect1.Height - Rect3.Height
end if

八、关闭并保存文件,这个操作其实是更新元件。

九、这时候,我们可以测试这个气温计,它的Value属性不能随便输入其它值了。


--  作者:qindian
--  发布时间:6/11/2009 3:35:00 PM

--  
又来更新喽,希望大家多支持
读写图形属性

我们需要读和写画面上图形的属性,下面以VB为例说明使用方法:

一、在VB中新建一个工程文件, 在工具栏上添加Visual Graph控件。

二、在窗口上添加Visual Graph ActiveX Control控件。

三、在Load事件里写程序:

vgctrl1.Design ""
set d = vgctrl1.vg.ActiveSheet.AddUnit( 0, "circle" )
d.SetBounds 10, 10, 32, 32
d.BackColor = 0

上面第一句程序新建一个图形文件,第二句添加一个圆。

四、在控件的OnDblClick事件中编写下面的代码:

set d = vgctrl1.vg.ActiveSheet.Units( 0 )
d.Width = 96
d.Height = 64
d.SetPropertyValue "BackColor", 255
MsgBox d.GetPropertyValue( "BackColor" )

五、运行这个程序,双击画面上的椭圆。


--  作者:qindian
--  发布时间:6/29/2009 4:32:00 PM

--  
页面与层的高级应用


       在VG里面,我们创新的把页面与层统一起来,使页面能当作层用,层也可以当作页面用,Sheet就是页面也是层。下面就是页面管理。

       如果,一个VG里面的有的Sheet的属性Visible都是TRUE时,那么这时候可见的页面就是当作层来显示,就是那几个Visible是TRUE的页面同时显示出来,而显示的顺序就是第一页就是显示在最下面,最后一页就是显示在最上面。可以调整页面的次序位置。

       页面的一个大用处就是做库图文件,一个库文件里面包括许多图元,那么图元的物理上是如何分开的,在VG里面就是用Sheet来分开,一个Sheet里面就是一个图元,所以当VG加载图库时,会从以一个页面转化为一个图元来加载里面所有的图元。

       层的本质利用是图元分组,在VG里面有两种图元分组方式:硬分组、软分组。硬分组:一般的分层方式(在VG里面就是Sheet方式,只要把Sheet里面的Visible属性为TRUE),层与层之间的图元是没有任何连接与逻辑关系的,硬生生的把整个图形里面的图元分与若干组,也就是层了。软分组:单元组,页面上的图形可以自由分组,一个图形单元可以同时存在于多个单元组中,如果某单元删除,单元组自动更新(即从数组中删除该单元),不同单元组里面的图元可以连接拓扑。而AutoCAD中的层的概念就是VG中的单元组了。


--  作者:qindian
--  发布时间:7/3/2009 10:35:00 AM

--  
不知道对大家有没有一点启发,也没有人发言,暂且停止发内容。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms