Visio 內建多種縮放命令,開發增益集時需整合選單、工具列下拉框並支援使用者輸入自訂百分比。本文提供完整的 SetZoom 統一入口實作,涵蓋 10 種預設模式與任意比例輸入處理。
ToolStripMenuItem 陣列,每項 Click 事件指向同一處理函式。ToolStripComboBox (DropDownStyle=DropDown),KeyUp 捕捉 Enter 鍵觸發縮放。
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);
}
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 zoom = Convert.ToDouble(zoomText.Replace("%", ""));
this.VisWindow.Zoom = zoom / 100.0; // Zoom 屬性為小數 (1.0 = 100%)
this.tsStandard_Zoom.Text = zoom + "%"; // 同步更新工具列顯示
} catch { /* 忽略非數值輸入 */ }
}
| 功能 | 命令常數 | 說明 |
|---|---|---|
| 400% | visCmdView400 | 固定比例 |
| 200% | visCmdView200 | |
| 150% | visCmdView150 | |
| 100% | visCmdView100 | |
| 75% | visCmdView75 | |
| 50% | visCmdView50 | |
| 上次縮放 | visCmdZoomLast | 恢復上一次縮放比例 |
| 頁面寬度 | visCmdZoomSingleTile | 適應單頁寬度 |
| 整頁 | visCmdZoomPageWidth | 適應整頁 |
| 自訂縮放 | visCmdViewCustom | 開啟縮放對話框 |
VisWindow.Zoom 接受 double(1.0 = 100%),工具列顯示需自行格式化為「xxx%」。ToolStripComboBox 設 AutoCompleteMode = SuggestAppend 可提升輸入體驗。switch case 完全一致(含全形/半形),建議用常數定義。此實作完整對應 Visio 原生縮放體驗,並延伸支援任意比例輸入,可直接整合至增益集專案。