windows phone (17) ManipulationDelta事件

來源:互聯網
上載者:User

 

ManipulationDelta事件會是在觸摸位置發生變化是引發,比如可以根據使用者在觸控螢幕中移動的位置,圖片發生相應的位移,根據客戶兩手指在觸控螢幕上的位置,進行圖片的放大縮小;這裡用到的案例就是

<!--ContentPanel - 在此處放置其他內容-->        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">            <Image Source="1.jpg" x:Name="imgScale" Width="200" Height="200"  ManipulationDelta="imgScale_ManipulationDelta" >                          </Image>        </Grid>

 效果:

 

 從上面可以看到我們引用了一張圖片,並設定了ManipulationDelta事件,該事件的實現是:

 private void imgScale_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)        {            Image els = sender as Image;            CompositeTransform ct = new CompositeTransform();            ct.TranslateX = 0;                                if (e.DeltaManipulation.Scale.X!=0||e.DeltaManipulation.Scale.Y!=0)            {                double maxOne = Math.Max(e.DeltaManipulation.Scale.Y, e.DeltaManipulation.Scale.X);                ct.ScaleX *= maxOne;                ct.ScaleY *= maxOne;            }            //e.IsInertial                        this.PageTitle.Text = "移動,X:" + e.ManipulationOrigin.X.ToString() + "\nY:" + e.ManipulationOrigin.Y.ToString();            ct.TranslateX = e.DeltaManipulation.Translation.X;            ct.TranslateY = e.DeltaManipulation.Translation.Y;            els.RenderTransform = ct;            e.Handled = true;        }

 上述代碼的藐視:獲得xaml中已經執行個體的Ellipse對象,並執行個體化一個新的CompositeTransform對象,判斷縮放的比例是否為空白,如果不為空白,判斷在X軸和Y軸哪個比例較大,取較大者作為縮放比例,然後實現相應的位移;這裡用到的幾個知識點是:

 

sender as [元素類] 獲得發生該事件的元素

 

 

e.DeltaManipulation 獲得最近發生的更改

 

e.DeltaManipulation.Scale 官方:擷取操作已調整的作為乘數的量 (我的理解:擷取移動的值並作為放大縮小的比例值),可繼續點出對應的X,Y值

e.DeltaManipulation.Translation 擷取通過觸摸移動的尺寸,可繼續點出對應的X,Y值

 

e.ManipulationOrigin 獲得操作的起始點,可繼續點出對應的X,Y值

 

e.IsInertial 擷取是否在慣性運動期間發生
ManipulationDelta 事件,在上一篇中介紹到變換,你會發現很多文字都會超出文本所能承受的地區,此時就可以判斷文字的變換效果十分超出現實地區,如果超過,則e.complete(); 結束該觸摸事件

 e.CumulativeManipulation 擷取累計的操作更改,類似於記錄

 e.ManipulationContainer  擷取定義操作座標的容器,和sender as [元素類] 比如上列代碼的容器是Image

 

如果滑鼠進行類比,做水平向右移動,則效果是:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.