我们知道,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中的缩放、自定义缩放等功能了。

标签: none

添加新评论