图形的基本编辑

1、撤销与恢复

在绘图状态下,软件对大部分编辑操作给出无数级的Undo和Redo,这样即使操作发生失误也可以恢复到以前的编辑状态。在运行状态下,这两种操作无效。

页面切换或文件存盘以后,所有历史操作被清空,就不能再执行这两种命令了。

在页面上对某元件内部图形进行编辑时,操作无法撤销和恢复。

可以改变系统参数SystemParams.Undobuffersize的值来修改撤销操作最大允许的内存大小。UndoBufferSize最小可以是0(不允许撤销或恢复),最大是10兆。

参见Undo、CanUndo、Redo、CanRedo

2、复制

选中一组单元,按下CTRL键,用鼠标拖动这组单元,这组单元即被复制。设置SystemParams.CtrlDup参数为false时,可禁止这个复制操作。

一组图形单元被拷贝到裁剪板的时候的三种格式:

1、Visual Graph矢量图形格式

2、增强格式的图元

3、位图格式

视图类的函数成员CopyToClipboard把图形复制到裁剪板。而页面类的函数成员CopyUnit把一个图形复制到同一个位置,CopyGroup把一组图形复制到同一个位置。

如果当前有一个文字单元得到输入焦点,并且其中一些文字被选中,复制操作变成只是把文字拷贝到裁剪板。文字单元也有CopyToClipboard()函数。要判断是否有某个文字单元得到焦点可以用GetFocusedText()函数。要判断这个文字单元是否有一些文字被选中,可以用SelLength属性判断。

拷贝到裁剪板的图形可以在Word、Visio等其他矢量图形软件中粘贴成增强图元格式(emf)(注意,使用“选择性粘贴”)。

3、裁剪

把当前选中单元组复制到裁剪板中,然后把选中的单元删除。相当于“复制”+“删除”。但是在写程序时应该如下:

BeginUpdate()

CopyToClipboard()

DeleteSelection()

EndUpdate()

这样操作被撤销时可以一次撤销这两步。

如果当前有一个文字单元Text1得到输入焦点,并且选中了一些文字,裁剪操作变成只是把文字裁剪。应该写入下代码:

BeginUpdate()

Text1.CopyToClipboard()

Text1.DeleteSelection()

EndUpdate()

4、粘贴

就是把先前复制到裁剪板中的单元组、位图或文字粘贴到当前页面上。

要判断裁剪板上是否有可以粘贴到页面上的图形,可以用视图类的CanPaste()函数,如果裁剪板上包含相关的内容,此函数返回True。

粘贴命令选择后,鼠标变为十字,移动鼠标到合适的地方,单击左键。由于普通文字单元可能不能重叠,粘贴时需要注意。

如果裁剪板上有位图,粘贴到页面上的将是一个含填充图片的四边形,如果裁剪板上有字符串,粘贴到页面上的将是一个文字单元。

此功能对应的函数是Paste()。

也可以调用视图类的函数成员PasteFromClipboard把裁剪板上的图形直接粘贴到窗口左上角。

如果当前有一个文字单元Text1得到输入焦点,并且裁剪板上有一些字符串,也可把字符串从裁剪板上粘贴到光标所在的位置。

可以用Text1.CanPaste()函数判断是否可以执行这样的粘贴操作。如果可以,再调用Text1.PasteFromClipboard()把字符串粘贴到光标位置。

对于Word、Visio等矢量图软件的图形选中拷贝后,在裁剪板中生成的图元格式的emf图片,可以粘贴到Visual Graph中,方法是在集成开发环境中选择“编辑/粘贴EMF图片”实现格式转换。

5、删除

如果页面上有一组图形被选中,可以删除它,对应的函数是DeleteSelection()。

如果被删除的单元属于某个单元组,单元组将随之更新,即组中元素个数减少一个(组中元素可以为0个)。

如果当前有一个文字单元Text1得到输入焦点,并且有一些文字内容被选中,删除操作应变成对选中部分文字的删除,对应的函数是:Text1.DeleteSelection()。

如果被删除的单元和一些图形相连,相应的拓扑连接点自动被删除。

如果图形被设定了禁止删除保护(Protect),此图形无法删除。

6、选择图形

要对页面中的某些单元进行编辑,必须先选择这部分单元,一个被锁定的图形无法选中,除非同时按下ALT键。选择单元的方法有三种:

一、鼠标法:

① 鼠标左键单击一个单元,则此单元被选中。

② 按住SHIFT键,用鼠标左键单击一个单元,如果此单元不在选择组内,则该单元被选择,否则,该单元不被选择。

③ 用鼠标在窗口中从空白处开始拉一个方框、松手,则与框相交的所有单元被选中。

④ 按住SHIFT键拉框,如果与框相交的单元不在选择组内,则该单元被选择,否则,该单元不被选择。

二、键盘法:

用上、下、左、右、PgUp、PgDn键可以在文字单元间移动输入光标,并选择有输入光标的单元。而Tab键选择后面一个图形(上层),Shift + Tab键选择前面一个图形(下层)。

三、名字法:

在集成开发环境“属性列表窗口”的上方下拉列表中选择某一单元,该单元被选中。

在系统参数中有一个SelectionMode,该值决定图形选择的模式(0表示只要选择框和某图形相交,该图形就算选中,1表示只有选择框完全包含某个图形时,该图形才算选中)。

每个页面都有一个选择组。由于元件等同于页面,所以,其实每个元件内也都有一个选择组。

7、叠放次序

如果页面上有两个以上的图形,可以调整图形的上下顺序。

“提到前面”就是把被选中的单元提到页面的最上面;而“放到下面”则是把被选中的单元放到页面的下面。

在下面的例子中,可以看到带双箭头的黑线被移动位置的情形:

图形单元、单元组都有两个函数成员BringToFrontSendToBack完成上述功能。

8、图形移动

要用鼠标移动一组选中的单元,鼠标必须位于其中某个单元的合适位置上。例如,当一条折线的网纹为1时,它是一个多边形,鼠标在这个多边形内任一点上都可以移动它,但是当网纹为0是,它是一条折线,此时,鼠标在线上才可以移动它。同样的情形在文字单元中也有反映。如果移动的同时按下Ctrl键,则首先复制这组图形,然后移动。设置SystemParams.CtrlDup参数为false时,可禁止这个复制操作。

按下Ctrl键,再按方向键,可以微移这组单元,每次一个像素的距离。若同时按下Ctrl和Shift键,再按方向键,可以按栅格点距移动。

如果一个图形被设置了移动保护(protect),则无法用鼠标移动,但是不影响下面用函数进行的移动。

MoveTo函数或MoveBy函数可以移动图形单元或者一个单元组。这种情形下,图形的旋转中心随之移动。

通过设置图形单元或单元组的Left、Top属性,也可以移动它。这种情形下,图形的旋转中心并未随之移动,要注意这点的不同。

9、图形旋转

每个图形都可以围绕它的旋转中心做360度自由旋转。旋转中心的位置可以自由移动。自由旋转对应的函数是Rotate()。

执行旋转命令时,画面上会出现一个旋转中心和旋转手柄,旋转中心是一个绿色小圆圈,可以用鼠标拖动它,从而改变旋转中心。把鼠标移动到旋转手柄上,按下并移动鼠标,图形开始旋转。如果旋转图形的同时,按下Ctrl键,则图形按45、90度这样的方式旋转。如果旋转时按了Esc键,则放弃操作,图形回到未旋转前的状态。 注意,当SystemParams.ShowRotateHandle=true时,每个图形的旋转中心和旋转手柄始终是显示的,即使不执行Rotate函数。

当图形设置了旋转保护(protect),该图形无法旋转,修改Angle属性也无法旋转。

图形的旋转中心是 XOrigin和YOrigin。用函数SetOrigin可以设置图形的旋转中心位置。

图形旋转时,过渡网纹、内部图片、文字、输入光标都会随之旋转。

图形旋转不仅能够严格保持形状,此外,图形的运算关系也能完好地保持下来。比如让一个图形的高度发生变化的脚本程序,图形旋转后,这段程序仍然有效,因为此图形的坐标系旋转,高度的方向也旋转了。



回首页 软件简介 应用领域 技术特点 文件说明 集成开发环境 基本操作 系统参数 语法体系 activex技术文档 视图文件 页面 单元组 图形单元 文字单元 形状单元 折线单元 元件单元?VG在Delphi中的使用方法 VG在VB中的使用方法 VG在VC中的使用方法 VG在C#中的使用 Delphi Visual Basic Visual C++ C# Visual Basic .Net调用Visual Graph的函数 调试元件 自定义Visual Graph脚本语言 在运行状态下用鼠标拖动图形 图库的使用
基于Visual Graph快速开发井下人员定位系统 如何快速开发图形仿真软件系统 自已开发组态软件(one can do it) 工程平面图制作系统 工作流与图形系统 安全监测系统联网解决方案 矿井人员考勤定位系统简介 配电技术信息管理系统 线损管理系统解决方案 DR-DTS 调度员反事故演习培训仿真系统 调度自动化系统应用软件 福州电网无功电压 AVC 控制系统 马鞍山地区电网无功电压综合优化自动控制系统 变电站图形开票系统 DR-OTS电网调度智能防误操作系统 配网调度智能模拟操作系统 基于Visual Graph的电力系统图形开发

http://www.visual-graph.com

@2004-2007 北京图王Visual Graph.版权所有.