Рисование вещей на холсте - PullRequest
11 голосов
/ 15 мая 2011

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

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

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

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

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

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

Ответы [ 2 ]

8 голосов
/ 15 мая 2011

Существуют различные способы сделать это.В зависимости от природы красной точки, вы можете сделать ее 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);
}
4 голосов
/ 15 мая 2011

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

Формы и элементы управления в приложениях Windows (включая телефон) могут быть обновлены по нескольким причинам в любое время. Если вы рисуете на холсте в ответ на действие касания, у вас есть обновленный холст до следующего обновления. Если происходит обновление, холст перекрашивается сам, в результате получается пустой холст.

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

...