di: Davide Zordan 07 Aprile 2010
Proviamo a costruire un primo esempio in grado di intercettare gli eventi touch generati e visualizzare le coordinate dei punti selezionati e la relativa action associata a ciascuno di essi. Per iniziare creiamo una nuova "Silverlight application" e aggiungiamo un controllo DataGrid per visualizzare le coordinate (X,Y) e l'Action dei Touch points correntemente selezionati:
Listato 1: MainPage.xaml
<UserControl x:Class="BasicMultiTouch.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<Canvas x:Name="LayoutRoot" Background="White">
<my:DataGrid x:Name="touchPoints_DataGrid" AutoGenerateColumns="True" />
</Canvas>
</UserControl>
Di seguito la definizione dell'handler per l'evento Touch.FrameReported:
Listato 2: MainPage.xaml.cs
public partial class MainPage
{
public MainPage()
{
InitializeComponent();
Touch.FrameReported += Touch_FrameReported;
}
void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
touchPoints_DataGrid.ItemsSource = e.GetTouchPoints(this);
foreach (var touchPoint in e.GetTouchPoints(this))
{
if (touchPoint.Action == TouchAction.Up) continue;
var point = new Ellipse()
{
Width = 40,
Height = 40,
Fill = new SolidColorBrush(Colors.Green)
};
point.SetValue(Canvas.TopProperty, touchPoint.Position.Y - 64);
point.SetValue(Canvas.LeftProperty, touchPoint.Position.X - 64);
LayoutRoot.Children.Add(point);
}
}
}
La collezione e.GetTouchPoints() permette il recupero di tutti i touchPoints correntemente selezionati dall'utente. Per ciascuno di essi è possibile verificarne lo stato (action) ovvero:
| Stato (Action) | Descrizione |
|---|---|
TouchAction.Down | il point è stato appena selezionato, in modo simile al tradizionale evento MouseDown |
TouchAction.Up | il point è stato appena rilasciato |
TouchAction.Move | il point è in movimento ed è possibile recuperarne le coordinate mediante tp.Position.X, tp.Position.Y |
Nell'esempio descritto, per ogni azione che sia una "Up" o "Move", andremo ad aggiungere alla nostra client-area un controllo "Ellipse" corrispondente al touch-point selezionato in modo da creare un'applicazione simile a Paint. Di seguito è disponibile l'output:
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |