2011-04-09 164 views
2

我有一個大圖像,我需要在一個較小的容器(或smthg像這樣)顯示。用戶應該能夠向上,向下移動圖像,向左移動&。它應該像谷歌地圖。像谷歌地圖的圖像移動

你知道我可以從哪裏開始以及如何解決這個問題嗎?

回答

1

也許像DeepZoom這樣的工作。


您還可以使用平移功能創建簡單的UserControl或CustomControl,例如,有一個處理一些鼠標事件的畫布來操作圖像上的TranslateTransform,該圖像應該是畫布的子項。

事件處理大綱:

// Add this transform to the image as RenderTransform 
private TranslateTransform _translateT = new TranslateTransform(); 
private Point _lastMousePos = new Point(); 

private void This_MouseDown(object sender, MouseButtonEventArgs 
{ 
    if (e.ChangedButton == PanningMouseButton) 
    { 
     this.Cursor = Cursors.ScrollAll; 
     _lastMousePos = e.GetPosition(null); 
     this.CaptureMouse(); 
    } 
} 

private void This_MouseUp(object sender, MouseButtonEventArgs e) 
{ 
    if (e.ChangedButton == PanningMouseButton) 
    { 
     this.ReleaseMouseCapture(); 
     this.Cursor = Cursors.Arrow; 
    } 
} 

private void This_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (this.IsMouseCaptured) 
    { 
     Point newMousePos = e.GetPosition(null); 
     Vector shift = newMousePos - _lastMousePos; 
     _translateT.X += shift.X; 
     _translateT.Y += shift.Y; 
     _lastMousePos = newMousePos; 
    } 
} 
+0

謝謝。 DeepZoom似乎是一個很好的解決方案,但一點點超載。 – timmes 2011-04-09 17:35:49

+0

增加了另一個建議大綱,對於巨大的圖像而言性能更差,但更簡單。 – 2011-04-09 18:10:46

+0

謝謝H.B.!它適用於我,表現並不那麼差:) – timmes 2011-04-11 07:13:22