C#进行Visio二次开发之图纸缩放操作的实现
我们知道,Visio菜单【视图】中有一个缩放的菜单项目,如下所示,选择响应的选项会对图纸进行缩放。

另外,它的工具条中也有一个下拉列表框,除了可以选择现有的那些选项外,还可以输入自定义的值,达到自定义缩放比例的功能。

本文介绍如何使用C#和Visio的SDK函数,实现Visio中的图纸各种缩放操作。
首先我们建立一个缩放菜单项和一个各种缩放比例的子菜单项,如第一个图形所示;然后将所有的子菜单项的事件处理指向同一个函数,如下所示
private void menu_View_Zoom_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = (ToolStripMenuItem)sender;
SetZoom(item.Text);
}
然后添加下拉列表框,如第二个图形所示,并添加它的处理函数。
private void tsStandard_Zoom_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SetZoom(tsStandard_Zoom.Text);
}
}
接着我们实现SetZoom函数,该函数除了接收各种缩放比例外,还可以接收自定义的比例处理。
具体逻辑,看代码后就一目了然
private void SetZoom(string zoomText)
{
switch (zoomText)
{
case "400%":
VisApplication.DoCmd((short)VisUICmds.visCmdView400);
break;
case "200%":
VisApplication.DoCmd((short)VisUICmds.visCmdView200);
break;
case "150%":
VisApplication.DoCmd((short)VisUICmds.visCmdView150);
break;
case "100%":
VisApplication.DoCmd((short)VisUICmds.visCmdView100);
break;
case "75%":
VisApplication.DoCmd((short)VisUICmds.visCmdView75);
break;
case "50%":
VisApplication.DoCmd((short)VisUICmds.visCmdView50);
break;
case "上次":
VisApplication.DoCmd((short)VisUICmds.visCmdZoomLast);
break;
case "宽度":
VisApplication.DoCmd((short)VisUICmds.visCmdZoomSingleTile);
break;
case "页":
VisApplication.DoCmd((short)VisUICmds.visCmdZoomPageWidth);
break;
case "缩放
":
VisApplication.DoCmd((short)VisUICmds.visCmdViewCustom);
break;
default:
CustomedSize(zoomText);
break;
}
}

private void CustomedSize(string zoomText)
{
try
{
double zoomSize = Convert.ToDouble(zoomText.Replace("%", ""));
this.VisWindow.Zoom = zoomSize / 100;
this.tsStandard_Zoom.Text = zoomSize + "%";
}
catch
{ }
}
这样就可以完整实现Visio中的缩放、自定义缩放等功能了。

另外,它的工具条中也有一个下拉列表框,除了可以选择现有的那些选项外,还可以输入自定义的值,达到自定义缩放比例的功能。

本文介绍如何使用C#和Visio的SDK函数,实现Visio中的图纸各种缩放操作。
首先我们建立一个缩放菜单项和一个各种缩放比例的子菜单项,如第一个图形所示;然后将所有的子菜单项的事件处理指向同一个函数,如下所示





然后添加下拉列表框,如第二个图形所示,并添加它的处理函数。







接着我们实现SetZoom函数,该函数除了接收各种缩放比例外,还可以接收自定义的比例处理。
具体逻辑,看代码后就一目了然




















































这样就可以完整实现Visio中的缩放、自定义缩放等功能了。

转载请注明出处:撰写人:伍华聪 http://www.iqidi.com
标签:
Visio二次开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)