|
|
图形的基本编辑
1、撤销与恢复
在绘图状态下,软件对大部分编辑操作给出无数级的Undo和Redo,这样即使操作发生失误也可以恢复到以前的编辑状态。在运行状态下,这两种操作无效。
页面切换或文件存盘以后,所有历史操作被清空,就不能再执行这两种命令了。
在页面上对某元件内部图形进行编辑时,操作无法撤销和恢复。
可以改变系统参数SystemParams.Undobuffersize的值来修改撤销操作最大允许的内存大小。UndoBufferSize最小可以是0(不允许撤销或恢复),最大是10兆。
2、复制
选中一组单元,按下CTRL键,用鼠标拖动这组单元,这组单元即被复制。设置SystemParams.CtrlDup参数为false时,可禁止这个复制操作。
一组图形单元被拷贝到裁剪板的时候的三种格式:
1、Visual Graph矢量图形格式
2、增强格式的图元
3、位图格式
视图类的函数成员CopyToClipboard把图形复制到裁剪板。而页面类的函数成员CopyUnit把一个图形复制到同一个位置,CopyGroup把一组图形复制到同一个位置。
如果当前有一个文字单元得到输入焦点,并且其中一些文字被选中,复制操作变成只是把文字拷贝到裁剪板。文字单元也有CopyToClipboard()函数。要判断是否有某个文字单元得到焦点可以用GetFocusedText()函数。要判断这个文字单元是否有一些文字被选中,可以用SelLength属性判断。
拷贝到裁剪板的图形可以在Word、Visio等其他矢量图形软件中粘贴成增强图元格式(emf)(注意,使用“选择性粘贴”)。
3、裁剪
把当前选中单元组复制到裁剪板中,然后把选中的单元删除。相当于“复制”+“删除”。但是在写程序时应该如下:
CopyToClipboard()
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、叠放次序
如果页面上有两个以上的图形,可以调整图形的上下顺序。
“提到前面”就是把被选中的单元提到页面的最上面;而“放到下面”则是把被选中的单元放到页面的下面。
在下面的例子中,可以看到带双箭头的黑线被移动位置的情形:

图形单元、单元组都有两个函数成员BringToFront和SendToBack完成上述功能。
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可以设置图形的旋转中心位置。
图形旋转时,过渡网纹、内部图片、文字、输入光标都会随之旋转。
图形旋转不仅能够严格保持形状,此外,图形的运算关系也能完好地保持下来。比如让一个图形的高度发生变化的脚本程序,图形旋转后,这段程序仍然有效,因为此图形的坐标系旋转,高度的方向也旋转了。
@2004-2007 北京图王Visual Graph.版权所有. |