Рисование вещей на холсте
Как бы я нарисовал что-нибудь на холсте в С# для Windows Phone?
Хорошо, позвольте мне быть более ясным.
Скажите, что пользователь ударил пальцем по 386,43 на холсте. (холст 768 на 480)
Я хочу, чтобы мое приложение могло ответить, поставив красную точку на 386,43 на холсте.
У меня есть нет предыдущий опыт работы с Canvas.
Если, это слишком сложно, чтобы получить ответ в одном вопросе (который, вероятно, есть), пожалуйста, дайте мне ссылки на другие сайты с статьями Canvas и Drawing.
Ответы
Ответ 1
Существуют различные способы сделать это. В зависимости от природы красной точки вы можете сделать это UserControl. Для базового круга вы можете просто обработать событие canvas ManipulationStarted
.
private void myCanvas_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
{
Ellipse el = new Ellipse();
el.Width = 10;
el.Height = 10;
el.Fill = new SolidColorBrush(Colors.Red);
Canvas.SetLeft(el, e.ManipulationOrigin.X);
Canvas.SetTop(el, e.ManipulationOrigin.Y);
myCanvas.Children.Add(el);
}
Ответ 2
Я думаю, вам нужно подойти к проблеме по-разному. (Из-за этого я не использую код специально).
Формы и элементы управления в приложениях Windows (включая телефон) могут быть обновлены по нескольким причинам в любое время. Если вы рисуете на холсте в ответ на действие касания, у вас есть обновленный холст до следующего обновления. Если возникает обновление, холст перерисовывается сам, вы получаете пустой холст.
Я не знаю, какова ваша конечная цель, но вы, вероятно, захотите либо следить за тем, что сделал пользователь, и сохранить это состояние где-то, и показать его на холсте при перерисовке холста. Это можно сделать, сохранив все действия и "переиграв" их на холсте или просто сохранив представление холста в виде растрового изображения и перезагрузив его с помощью растрового изображения при обновлении. Но в более позднем случае я считаю, что использование холста не является правильным решением.