天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

WPF Multi-Touch 開(kāi)發(fā):高級(jí)觸屏操作(Manipulation)

  在上一篇中我們對(duì)基礎(chǔ)觸控操作有了初步了解,本篇將繼續(xù)介紹觸碰控制的高級(jí)操作(Manipulatioin),在高級(jí)操作中包含了一些特殊的觸屏手勢(shì):平移、縮放、旋轉(zhuǎn),當(dāng)然在WPF 中無(wú)需自行開(kāi)發(fā)這些手勢(shì),只需將UI 控件的IsManipulationEnabled 屬性激活,并通過(guò)以下四種事件完成各種觸屏手勢(shì)操作:ManipulationStarting、ManipulationStarted、ManipulationDelta、ManipulationInertiaStarting、ManipulationCompleted,下圖為各事件之間的工作順序及關(guān)系。

image_thumb_1

  創(chuàng)建項(xiàng)目

  新建項(xiàng)目在XAML 程序中寫(xiě)入下面代碼,為<Canvas>設(shè)置ManipulationStarting、ManipulationDelta、ManipulationCompleted 事件,并在其中添加三張圖片,將Image 的IsManipulationEnabled 屬性均為"True",同時(shí)所有的Image 都添加了<MatrixTransform>對(duì)象,用于組合平移、縮放、旋轉(zhuǎn)操作。

<Window x:Class="WpfManipulation.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="500" Width="600">
<
Grid>
<
Canvas x:Name="touchPad" Background="Gray"
ManipulationStarting="image_ManipulationStarting"
ManipulationDelta="image_ManipulationDelta"
ManipulationCompleted="image_ManipulationCompleted">
<
Image Canvas.Top="52" Canvas.Left="34" Width="200"
IsManipulationEnabled="True" Source="Images/P1.jpg">
<
Image.RenderTransform>
<
MatrixTransform></MatrixTransform>
</
Image.RenderTransform>
</
Image>
<
Image Canvas.Top="75" Canvas.Left="339" Width="200"
IsManipulationEnabled="True" Source="Images/P2.jpg">
<
Image.RenderTransform>
<
MatrixTransform></MatrixTransform>
</
Image.RenderTransform>
</
Image>
<
Image Canvas.Top="243" Canvas.Left="168" Width="200"
IsManipulationEnabled="True" Source="Images/P3.jpg">
<
Image.RenderTransform>
<
MatrixTransform></MatrixTransform>
</
Image.RenderTransform>
</
Image>
</
Canvas>
</
Grid>
</
Window>

XAML

  當(dāng)觸碰到Image 圖片時(shí),image_ManipulationStarting 事件將會(huì)自動(dòng)觸發(fā),首先需要定義ManipulationContainer(即為touchPad<Canvas>),該容器的主要用于定義參考坐標(biāo),圖片的任何操作均以參考坐標(biāo)為準(zhǔn)。ManipulationModes 設(shè)置可以限制哪些手勢(shì)操作是程序允許的,如果沒(méi)有特殊情況可設(shè)置為"All"。

private void image_ManipulationStarting(object sender, ManipulationStartingEventArgs e)
{
e.ManipulationContainer = touchPad;
e.Mode = ManipulationModes.All;
}

  ManipulationDelta 事件會(huì)在手勢(shì)操作開(kāi)始時(shí)觸發(fā),并且該手勢(shì)需持續(xù)進(jìn)行不得間斷。通過(guò)FrameworkElement 獲得接受操作的圖片控件,將圖片透明度降低到0.5,創(chuàng)建Matrix 用于控制圖片MatrixTransform,利用Point 獲得圖片中心坐標(biāo)點(diǎn),通過(guò)ScaleAt、RotateAt、Translate 執(zhí)行縮放、旋轉(zhuǎn)、平移操作。

private void image_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
FrameworkElement element = (FrameworkElement)e.Source;
element.Opacity = 0.5;

Matrix matrix = ((MatrixTransform)element.RenderTransform).Matrix;

var deltaManipulation = e.DeltaManipulation;

Point center = new Point(element.ActualWidth / 2, element.ActualHeight / 2);
center = matrix.Transform(center);

matrix.ScaleAt(deltaManipulation.Scale.X, deltaManipulation.Scale.Y, center.X, center.Y);

matrix.RotateAt(e.DeltaManipulation.Rotation, center.X, center.Y);

matrix.Translate(e.DeltaManipulation.Translation.X, e.DeltaManipulation.Translation.Y);

((MatrixTransform)element.RenderTransform).Matrix = matrix;
}

  最后,當(dāng)手指離開(kāi)觸摸屏即操作結(jié)束,image_ManipulationCompleted 事件觸發(fā),將圖片透明度重新調(diào)整為1。

private void image_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
FrameworkElement element = (FrameworkElement)e.Source;
element.Opacity = 1;
}

  程序演示

  相關(guān)文章

  1. WPF Multi-Touch 開(kāi)發(fā):Windows 7 安裝多點(diǎn)觸屏模擬器
  2. WPF Multi-Touch 開(kāi)發(fā):基礎(chǔ)觸屏操作(Raw Touch)

 

  源碼下載:WpfManipulation.zip

NET技術(shù)WPF Multi-Touch 開(kāi)發(fā):高級(jí)觸屏操作(Manipulation),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 色翁荡息又大又硬又粗又爽电影 | 欧美18videosex| 日韩人妻双飞无码精品久久 | 伊人大香线蕉精品在线播放 | 亚洲国产AV无码综合在线 | 毛片基地看看成人免费 | 99久久久无码国产精品免费人妻 | 男人天堂999 | 日本妞欧洲| 香蕉久久一区二区三区啪啪 | 成人国内精品久久久久影院 | 亚洲色欲色欲综合网站 | 亚洲伦理精品久久 | 全彩无翼污之邪恶女教师 | 女王黄金vk | 男同志video最新猛男 | 一品道门免费高清视频 | 国产伦精品一区二区三区 | 亚洲乱亚洲乱妇13p 亚洲乱色视频在线观看 | 国产精品青青在线麻豆 | 97精品少妇偷拍蜜桃AV | 涩涩视频www在线观看入口 | 刺激性视频黄页 | 欧美雌雄双性人交xxxx | 亚洲一区在线视频观看 | 99热成人精品国产免男男 | 色姐妹久久综合在线av | 亚洲国产韩国欧美在线不卡 | 2020国产成人精品视频人 | 国产99九九久久无码熟妇 | 伦理片天堂eeuss影院2o12 | 99久久伊人一区二区yy5o99 | 无限资源在线观看完整版免费下载 | 国产在线观看码高清视频 | 天美传媒在线观看完整高清 | 国产精品白浆精子流水合集 | 男人天堂2018亚洲男人天堂 | 久久精品热在线观看30 | 99久久夜色精品国产亚洲AV卜 | 果冻传媒MV免费播放在线观看 | 强奷乱码欧妇女中文字幕熟女 |