Windows Phone 7<三>触控程序开发

  Silverlight支持了两种不同应用程序接口用于多点触控,所以很容易区分低级和高级,低级应用都是基于Touch.FrameReported事件,非常类似于XNATouchPanel,但是它是事件,而且不包含手势。

  <一>:简单应用:

      

简单的应用是是基于Touch.FrameReported事件,通过处理 FrameReported 事件并访问 TouchFrameEventArgs 事件数据中的 TouchPoint 详细信息,从而响应触控。FrameReported 事件是在应用程序级别处理的单一事件,而不是公开为可能通过 UI 的对象树路由的特定于元素的事件。因此,不能使用事件处理程序的 sender 参数来确定涉及哪些元素。

  

<二>:

  而高级接口包含了由UIElement类定义的三个事件:ManipulationStarted,,ManipulationDelta,ManipulationCompleted.。

 

ManipulationStarted事件对应自己的参数ManipulationStartedEventArgs

xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
     <TextBlock Text="点我看看!"
           Padding="0 22"
           HorizontalAlignment="Center"
           VerticalAlignment="Center"
           ManipulationStarted="OnTextBlockManipulationStarted" />
 </Grid>

Code:

public partial class MainPage : PhoneApplicationPage
    {
        Random rand = new Random();

        public MainPage()
        {
            InitializeComponent();
        }
        void OnTextBlockManipulationStarted(object sender,
                                            ManipulationStartedEventArgs args)
        {
            TextBlock txtblk = sender as TextBlock;

            Color clr = Color.FromArgb(255, (byte)rand.Next(256),
                                            (byte)rand.Next(256),
                                            (byte)rand.Next(256));

            txtblk.Foreground = new SolidColorBrush(clr);

            args.Complete();
        }
    }

2:ManipulationDelta:

 public partial class MainPage : PhoneApplicationPage
    {
        Random rand = new Random();
        Brush originalBrush;

        public MainPage()
        {
            InitializeComponent();
            originalBrush = txtblk.Foreground;
        }

        protected override void OnManipulationStarted(ManipulationStartedEventArgs args)
        {
            if (args.OriginalSource == txtblk)
            {
                txtblk.Foreground = new SolidColorBrush(
                            Color.FromArgb(255, (byte)rand.Next(256),
                                                (byte)rand.Next(256),
                                                (byte)rand.Next(256)));
            }
            else
            {
                txtblk.Foreground = originalBrush;
            }

            args.Complete();
            base.OnManipulationStarted(args);
        }
    }

3.ManipulationCompleted

 public partial class MainPage : PhoneApplicationPage
    {
        Random rand = new Random();
        Brush originalBrush;

        public MainPage()
        {
            InitializeComponent();
            originalBrush = txtblk.Foreground;
        }

        void OnTextBlockManipulationStarted(object sender,
                                            ManipulationStartedEventArgs args)
        {
            txtblk.Foreground = new SolidColorBrush(
                        Color.FromArgb(255, (byte)rand.Next(256),
                                            (byte)rand.Next(256),
                                            (byte)rand.Next(256)));
            args.Complete();
            args.Handled = true;
        }

        protected override void OnManipulationStarted(ManipulationStartedEventArgs args)
        {
            txtblk.Foreground = originalBrush;

            args.Complete();
            base.OnManipulationStarted(args);
        }
	}

posted @ 2010-11-15 08:57  marr  阅读(306)  评论(0编辑  收藏  举报