2015-07-14 3 views
0

Я разрабатываю программное обеспечение для Windows Phone 8.1, и у меня есть следующая ситуация.Перемещение объектов на холсте - windows phone

На одной из моих страниц (не MainPage) у меня есть холст, и у меня есть несколько объектов (полигонов и линий), генерируемых динамически. Линии на краях полигонов, потому что я хотел бы использовать края изолированных, различные цвета, событие и т.д.

using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Shapes; 

Polygon polygon = new Polygon(); 
polygon.Points.Add(new Point(x1, y1)); 
polygon.Points.Add(new Point(x2, y2)); 
//other awesome things 
Line line = new Line(); 
line.X1 = x1; 
line.Y1 = y1; 
line.X2 = x2; 
line.Y2 = y2; 
//other amazing things 

я был в состоянии добавить эти вещи на холст, до этого момента все не в порядке. Но мне нужно перемещать эти объекты при касании (перетащите & drop, ManipulationDelta event возможно?), И, конечно, если сам многоугольник движется, линии тоже должны двигаться ... Так как же я мог это сделать? Каким должно быть мое событие?

Я думал, что я мог бы создать другой класс для этих объектов, как это:

public class MyPolygon 
{ 
    public Polygon _polygon; 
    public List<Line> _lines; 
} 

И это может быть хорошей идеей, если у меня есть координатно-настройки (и другие) функции в ней, но потом, как может Я соединяю их с холстом? И обработка событий по-прежнему остается вопросом для этой идеи.

Так что мой вопрос наполовину теоретический и наполовину практичный. Я открыт для каждого решения и идеи по этой теме.

ответ

0

Если вы используете холст, вы должны сделать его пропорциональным, используя следующие строки кода и манипулируя ими.

width = Convert.ToInt32(Window.Current.Bounds.Width); 
height = Convert.ToInt32(Window.Current.Bounds.Height) 

Вы можете добавить событие, которое каждый раз, когда вы двигаете что-то весь экран адаптирует к изменению и перемещается вместе с ним. Способ фактически перемещать объекты на холсте от C# код прост:

Obj1.SetValue(Canvas.LeftProperty, Width/2); 
Obj1.SetValue(Canvas.TopProperty, height * 0.1); 

это переместит левый верхний угол объекта до 0,9 высоты экрана и половины ширины его.

Смежные вопросы