2016-01-20 32 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的集合。这将自动保持缩放功能和轻扫功能。在您扫描图像时,每张图像都将保留其缩放系数。这在移动设备和台式机/平板电脑上运行良好。

让我知道如果你需要一些示例代码。我现在正在打电话,所以做源代码有点困难。

相关问题