C#编程定义Visio连接器Points:手动设置路径点方法问询
解决Visio连接器手动指定路径点的问题
我之前也碰到过一模一样的情况——用GlueTo连完形状后,自动路由的路径完全不符合预期,改ShapeSheet还被Visio拒了,后来才搞明白原因:默认的动态路由连接器,它的Geometry1区域是Visio自动维护的,处于锁定状态,根本不让手动修改。要手动指定路径点,得先把连接器改成静态的,再用API来添加路径点。
具体步骤和代码示例
1. 先禁用连接器的自动路由
这是关键一步,把连接器从“动态自动调整”改成“手动固定路径”。你可以通过设置RouteStyle属性为visRouteStyleNone来实现:
using Visio = Microsoft.Office.Interop.Visio; // 假设你已经获取了连接器对象connector connector.RouteStyle = Visio.VisRouteStyle.visRouteStyleNone;
2. 清除默认的多余路径点
连接器默认会有两个路径点(对应起点和终点),如果之前自动路由生成了中间点,得先删掉它们,避免干扰自定义路径:
// 只要路径点数量超过2(起点+终点),就从最后一个开始删 while (connector.Waypoints.Count > 2) { connector.Waypoints.Delete(connector.Waypoints.Count); }
3. 添加自定义路径点
现在就可以通过Waypoints集合添加你想要的路径点了,注意Visio默认的页面单位是英寸,如果你的坐标是厘米之类的,需要先转换(1厘米≈0.3937英寸):
// 添加你指定的路径点(1,2)、(2,4)、(5,6) connector.Waypoints.Add(1.0, 2.0); connector.Waypoints.Add(2.0, 4.0); connector.Waypoints.Add(5.0, 6.0);
额外提醒
- 这样设置后,连接器就变成静态的了,移动形状时不会自动调整路径,如果你需要重新自动路由,把
RouteStyle改回默认值就行,但手动加的路径点会丢失。 - 如果你更习惯操作ShapeSheet,禁用路由后也可以直接修改
Geometry1的单元格(比如Geometry1.X1、Geometry1.Y1这些),但用Waypoints集合会更直观,不用手动管理Geometry的行。
内容的提问来源于stack exchange,提问作者user2066337
相关产品推荐
相关产品推荐

