我們知道,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中的縮放、自定義縮放等功能了。