C#进行Visio二次开发之图纸缩放操作的实现

简介:
我们知道,Visio菜单【视图】中有一个缩放的菜单项目,如下所示,选择响应的选项会对图纸进行缩放。
Visio_Zoom1.jpg

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

本文介绍如何使用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二次开发之图纸缩放操作的实现,如需转载请自行联系原博主。



目录
相关文章
基于C#的ArcEngine二次开发56:双击属性表跳转目标要素并闪烁
基于C#的ArcEngine二次开发56:双击属性表跳转目标要素并闪烁
基于C#的ArcEngine二次开发56:双击属性表跳转目标要素并闪烁
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
基于C#的ArcEngine二次开发54:IStatusBar状态栏接口的使用
|
NoSQL 数据处理 C#
基于C#的ArcEngine二次开发52:GDB数据处理过程中与Name相关的操作
基于C#的ArcEngine二次开发52:GDB数据处理过程中与Name相关的操作
基于C#的ArcEngine二次开发52:GDB数据处理过程中与Name相关的操作
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
|
算法 C#
基于C#的ArcEngine二次开发50:生成面空洞连接线
基于C#的ArcEngine二次开发50:生成面空洞连接线
基于C#的ArcEngine二次开发50:生成面空洞连接线
|
存储 NoSQL Unix
基于C#的ArcEngine二次开发50:MDB创建新要素类及“无当前记录”异常处理
基于C#的ArcEngine二次开发50:MDB创建新要素类及“无当前记录”异常处理
基于C#的ArcEngine二次开发50:MDB创建新要素类及“无当前记录”异常处理
|
C# 开发工具
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
|
存储 C# Python
基于C#的ArcEngine二次开发46:编辑内容回撤与炸开multipart feature
基于C#的ArcEngine二次开发46:编辑内容回撤与炸开multipart feature
基于C#的ArcEngine二次开发46:编辑内容回撤与炸开multipart feature
|
C# 数据库
基于C#的ArcEngine二次开发45:属性值设置中的DBNull、null和default
基于C#的ArcEngine二次开发45:属性值设置中的DBNull、null和default
基于C#的ArcEngine二次开发45:属性值设置中的DBNull、null和default