Подтвердить что ты не робот

Рисование вещей на холсте

Как бы я нарисовал что-нибудь на холсте в С# для Windows Phone?

Хорошо, позвольте мне быть более ясным.

Скажите, что пользователь ударил пальцем по 386,43 на холсте. (холст 768 на 480)

Я хочу, чтобы мое приложение могло ответить, поставив красную точку на 386,43 на холсте.

У меня есть нет предыдущий опыт работы с Canvas.

Если, это слишком сложно, чтобы получить ответ в одном вопросе (который, вероятно, есть), пожалуйста, дайте мне ссылки на другие сайты с статьями Canvas и Drawing.

4b9b3361

Ответ 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 (включая телефон) могут быть обновлены по нескольким причинам в любое время. Если вы рисуете на холсте в ответ на действие касания, у вас есть обновленный холст до следующего обновления. Если возникает обновление, холст перерисовывается сам, вы получаете пустой холст.

Я не знаю, какова ваша конечная цель, но вы, вероятно, захотите либо следить за тем, что сделал пользователь, и сохранить это состояние где-то, и показать его на холсте при перерисовке холста. Это можно сделать, сохранив все действия и "переиграв" их на холсте или просто сохранив представление холста в виде растрового изображения и перезагрузив его с помощью растрового изображения при обновлении. Но в более позднем случае я считаю, что использование холста не является правильным решением.