Главная » Разработка для Windows Phone 7 » Canvas и сенсорный ввод

0

В главе 8 было показано, как реализовать перемещение элементов по экрану посредством сенсорного ввода. Это делалось путем изменения объектов трансформаций, заданных в качестве значений свойства RenderTransform. Элементы можно перемещать и в рамках Canvas, задавая присоединенные свойства Left и Top в коде.

Рассмотрим простое приложение TouchCanvas (Сенсорный холст). В Canvas располагается три элемента Ellipse красного, зеленого и синего цвета:

Проект Silverlight: TouchCanvas Файл: MainPage.xaml (фрагмент)

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Canvas Name="canvas">

<Ellipse Canvas.Left="50" Canvas.Top="50" Width="100" Height="10 0" Fill="Red" />

<Ellipse Canvas.Left="150" Canvas.Top="150" Width="100" Height="10 0" Fill="Green" />

<Ellipse Canvas.Left="250" Canvas.Top="250" Width="100" Height="10 0" Fill="Blue" />

</Canvas> </Grid>

В файле кода перегружаются методы OnManipulationStarted и OnManipulationDelta класса MainPage. В задании свойства ManipulationContainer (Контейнер для манипуляций) для Canvas в первом перегруженном методе нет крайней необходимости.

Проект Silverlight: TouchCanvas Файл: MainPage.xaml.cs (фрагмент)

public partial class MainPage : PhoneApplicationPage {

public MainPage() {

InitializeComponent();

}

protected override void 0nManipulationStarted(ManipulationStartedEventArgs args) {

args.ManipulationContainer = canvas;

base.0nManipulationStarted(args);

}

protected override void 0nManipulationDelta(ManipulationDeltaEventArgs args) {

UIElement element = args.0riginalSource as UIElement;

Point translation = args.DeltaManipulation.Translation;

Canvas.SetLeft(element, Canvas.GetLeft(element) + translation.X);

Canvas.SetTop(element, Canvas.GetTop(element) + translation.Y);

args.Handled = true; base.OnManipulationDelta(args);

}

}

Перегруженный метод OnManipulationDelta перемещает один из эллипсов. Для этого он извлекает значения Left и Top, добавляет к ним коэффициенты переноса и повторно задает полученные значения этим свойствам. Все выполняется с помощью довольно коротких и четких выражений.

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

  • Комментарии