2016-01-20 31 views
0

我在網格中有一個圖像元素以及其中的其他控件。我希望能夠縮放圖像。我不想將它放在滾動查看器中,因爲我不知道圖像的尺寸,因爲它是一個通用應用程序,我有很多Adpative UI和ScrollViewer混淆了整個事情。該圖像是從網上下載的。當用戶向左或向右滑動時,圖像的來源應改變爲上一張或下一張圖像。我將圖像的來源保存在LinkedList中並相應地更新源。通用Windows應用程序中的圖像操作

我用下面的代碼

MediaControl.ManipulationMode = ManipulationModes.TranslateX | ManipulationModes.TranslateY; 
     MediaControl.ManipulationStarted += (s, e) => { X1 = (int)e.Position.X; Y1 = (int)e.Position.Y; }; 
     MediaControl.ManipulationCompleted += (s, e) => { 
      X2 = (int)e.Position.X; 
      Y2 = (int)e.Position.Y; 
      if (Math.Abs(X1 - X2) >= 50 && Math.Abs(Y1 - Y2) < 20) 
      { 
       { 
        if (X1 > X2) 
        { 
         NextPostButton_Click(s, e); 
        } 
        else 
        { 
         PreviousPostButton_Click(s, e); 
        } 
       } 
      }; 
     }; 

我想有縮放功能,我在當源改變,同時圖像實現滑動即可切換圖像源,圖像應該縮小。我希望縮放和滑動功能都不影響其他操作。我該怎麼做呢?我是初學者,對複雜的指針事件沒有經驗。如果任何人都可以幫助我,或者指出我有一個很好的資源來了解這一點,我會永遠感激。 謝謝。

回答

0

可以註冊在ManipulationDelta事件,並使用ManipulationDelta.Scale財產採取變焦的照顧。

MediaControl.ManipulationMode = ManipulationModes.Scale | ManipulationModes.TranslateX; 

    private void MediaControl_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
    { 
     MediaControl.Height = e.Delta.Scale * MediaControl.ActualHeight; 
     MediaControl.Width = e.Delta.Scale * MediaControl.ActualWidth; 
    } 

有關在ManipulationDelta更多信息,請至 https://msdn.microsoft.com/en-us/library/system.windows.input.manipulationdelta.scale(v=vs.110).aspx

有關ManipulationModes更多信息,請至 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.input.manipulationmodes

0

使用FlipView用的ScrollViewer在裏頭的那裏面的圖片。然後,您只需將FlipView的ItemsSource綁定到Uri的集合。這將自動保持縮放功能和輕掃功能。在您掃描圖像時,每張圖像都將保留其縮放係數。這在移動設備和臺式機/平板電腦上運行良好。

讓我知道如果你需要一些示例代碼。我現在正在打電話,所以做源代碼有點困難。

相關問題