文章出處

與WPF相同Windows 8.1應用中也具有高級觸控操作(Manipulation),其中包含了三種常見的觸屏手勢:平移、縮放、旋轉,通過以下四種事件可為控件實現各種觸控操作:ManipulationStarting、ManipulationStarted、ManipulationDelta、ManipulationInertiaStarting、ManipulationCompleted。

打開Visual Studio 2013 Preview,新建Windows Store應用。在XAML代碼中添加Image控件,將ManipulationMode設置為ALL(也可按需要選擇不同模式),并為其添加ManipulationStarting、ManipulationDelta、ManipulationCompleted事件,以便后續實現相關手勢操作內容。RenderTransform中的CompositeTransform是一個控件變形組合,可容納多種變形屬性,如平移、旋轉、縮放。

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">		
  <Canvas>
    <Image x:Name="imageElement" Source="images/cliff.jpg"         Height="460" Width="758" Canvas.Left="300" Canvas.Top="150"         ManipulationMode="All"         ManipulationStarting="image_ManipulationStarting"         ManipulationDelta="image_ManipulationDelta"         ManipulationCompleted="image_ManipulationCompleted">       <Image.RenderTransform>         <CompositeTransform x:Name="imageCT"/>       </Image.RenderTransform>     </Image>   </Canvas> </Grid>

接下來,編寫每個事件的具體內容,如下代碼:

private void image_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
  e.Handled = true;
}

private void image_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
  FrameworkElement element = e.OriginalSource as FrameworkElement;
  element.Opacity = 0.5;
  
imageCT.TranslateX += e.Delta.Translation.X;   imageCT.TranslateY += e.Delta.Translation.Y;   imageCT.ScaleX *= e.Delta.Scale;   imageCT.ScaleY *= e.Delta.Scale;   imageCT.Rotation += e.Delta.Rotation; }
private void image_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) {
  
FrameworkElement element = e.OriginalSource as FrameworkElement;   element.Opacity = 1; }

     這些代碼很好理解,當ManipulationDelta觸發后,首先將控件透明度設置為0.5,然后捕捉觸控操作并對TranslateX、TranslateY(平移);ScaleX、ScaleY(縮放)、Rotation(旋轉)進行修改。最后ManipulationCompleted結束后將控件透明度恢復即可。按下F5鍵看看效果如何。

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()