[Windows Phone]讓物件旋轉吧!使用RenderTransform。

  • 2633
  • 0
  • 2014-01-22

[Windows Phone]讓物件旋轉吧!使用RenderTransform。

 

這篇利用「Timer」及「RenderTransform」,讓物件一直旋轉。

能夠用在雙人遊戲上,決定誰先開始~

 

 

1.先到xaml裡建一個「textblock」,裡面的text為「- ->」,若字體太小,可以自行調大。

再建立2個「button」決定「start」、「stop」。

   1: <Grid x:Name="ContentPanel" Grid.Row="1" >
   2:     <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
   3:         <TextBlock Name="textblock" TextAlignment="Center" FontSize="40" Text="-->"/>
   4:         <StackPanel Orientation="Horizontal">
   5:             <Button x:Name="btn_start" Click="btn_start_Click" Content="start"/>
   6:             <Button x:Name="btn_stop" Click="btn_stop_Click" Content="stop"/>
   7:         </StackPanel>
   8:     </StackPanel>
   9:     
  10: </Grid>

 

2.之後宣告並建立Timer,請參考[Windows Phone] DispatcherTimer之應用。

 

 

3.在Timer所委派的事件裡打入

   1: private void Timethread()
   2: {
   3:     TransformGroup tGroup = new TransformGroup();
   4:     RotateTransform tRot = new RotateTransform();
   5:     Recordslaps += 3;
   6:     tRot.Angle = Recordslaps % 360;
   7:     tGroup.Children.Add(tRot);
   8:     Dispatcher.BeginInvoke(() =>
   9:         {
  10:             textblock.RenderTransform = tGroup;
  11:             textblock.RenderTransformOrigin = new Point(0.5, 0.5);
  12:         });
  13: }

 

記得「using System.Windows.Media;」,之後宣告全域變數

   1: System.Windows.Threading.DispatcherTimer tDistimer = new System.Windows.Threading.DispatcherTimer();
   2: int Recordslaps = 0;

 

Recordslaps為紀錄累計角度的變數,在tRot.Angle設定為Recordslaps%360。

之後使用委派處理「Textblock」。

 

Reference

How to rotate a image in xaml/c#

 

 

若有觀念錯誤、內容錯誤,勞請告知。 謝謝。

若要轉載請註明出處,謝謝。