建立 8 個全透明 Rectangle 佈局地圖邊緣 8 區域(相對視窗固定),CompositionTarget 即時判斷滑鼠懸停觸發滾動。
int scrollspeed = 5;
Rectangle roller = new Rectangle();
private void InitRoller() {
roller.Width = 800; roller.Height = 20;
roller.Opacity = 0.3; // 演示用 0.3,實際設 0
roller.Fill = new SolidColorBrush(Colors.Blue);
Carrier.Children.Add(roller);
Canvas.SetZIndex(roller, 10001);
Canvas.SetTop(roller, 490);
}
private void Timer_Tick(object sender, EventArgs e) {
if (roller.IsMouseOver)
Canvas.SetTop(Map, Canvas.GetTop(Map) - scrollspeed);
}
其他 7 區域同理。Ctrl+F5 測試:滑鼠停留下方藍條,地圖平滑向上移動,實現視窗向下取景。