MapInfo 提供功能強大的 WinForms MapControl,可在 Visual Studio 中拖放使用。但這類控件封閉性極強,缺乏 Web 地圖(Google Maps、Live Maps)常見的滑鼠雙擊縮放、滾輪縮放、拖曳平移等直覺互動,使用者體驗大打折扣。
MapControl 的視窗建構函式中建立控件實例。MouseDown、MouseMove、MouseUp、MouseWheel 等)。MapControl 內建的縮放、平移方法,模擬 Web 風格操作。public partial class MapForm : Form
{
private MapControl mapControl;
public MapForm()
{
InitializeComponent();
mapControl = new MapControl();
// 訂閱滑鼠事件
mapControl.MouseWheel += MapControl_MouseWheel;
mapControl.MouseDown += MapControl_MouseDown;
mapControl.MouseMove += MapControl_MouseMove;
// 加入表單控件集合
this.Controls.Add(mapControl);
}
private void MapControl_MouseWheel(object sender, MouseEventArgs e)
{
// 滾輪縮放邏輯
if (e.Delta > 0) mapControl.ZoomIn();
else mapControl.ZoomOut();
}
// 其他事件處理...
}
透過事件封裝,將冰冷的靜態控件轉化為具備豐富互動體驗的動態地圖元件。