locked
И снова рисование на Canvas. RRS feed

  • Общие обсуждения

  • Снова я со своим рисованием.

    Рисую неразрывную  линию вот так:

    private void Canvas_PointerPressed_1(object sender, PointerRoutedEventArgs e)
            {
                Windows.UI.Input.PointerPoint p = e.GetCurrentPoint(canvas);
                Windows.UI.Xaml.Shapes.Ellipse j = new Windows.UI.Xaml.Shapes.Ellipse();
                j.Height = 10;
                j.Width = 10;
                j.Fill = globColor;
                j.Margin=new Thickness(p.Position.X-5,p.Position.Y-5,0,0);
                canvas.Children.Add(j);
                pre_p = p;
    
            }
    
    
    
    
    
    private void can_PointerMoved_1(object sender, PointerRoutedEventArgs e)
            {
                Windows.UI.Input.PointerPoint p = e.GetCurrentPoint(eggcan);
                if (p.IsInContact)
                {
                    Windows.UI.Xaml.Shapes.Ellipse j = new Windows.UI.Xaml.Shapes.Ellipse();
                    j.Height = 10;
                    j.Width = 10;
                    j.Fill = globColor;
                    j.Margin = new Thickness(p.Position.X-5, p.Position.Y-5, 0, 0);
                    eggcan.Children.Add(j);
                    Windows.UI.Xaml.Shapes.Polyline jL = new Windows.UI.Xaml.Shapes.Polyline();
                    jL.Points.Add(p.Position);
                    jL.Points.Add(pre_p.Position);
                    jL.Stroke = globColor;
                    jL.StrokeThickness = 10;
                	eggcan.Children.Add(jL);
                    pre_p = p;
                    
                }
            }

    Вот прошлое обсуждение:http://social.msdn.microsoft.com/Forums/ru-RU/1c8b330a-b26b-4a97-8a93-6f8d05d6dc96/-canvas?forum=winstoreappsru

    Но вот я такой проблемой я столкнулся. Когда пользователь подводит мышь к краю канваса, у него линия как-бы выбивается за пределе канваса. Всё дело в том,что там есть Elipse. И пред рисованием проверяется,не выходит ли за границы центр эллипса. В итоге на границе создаётся ситуация: 

    Центр эллипса внутри канваса,следовательно канвас надо рисовать, в итоге канвас на половину окружности выбивается за контур. 

    И беда в том,что можно было бы отслеживать координаты точки,где рисуем и не давать пользователю рисовать слишком близко к границе,то есть центр эллипса не ближе,чем радиус эллипса к границе. А  у меня буде в том,что канвас немного скруглён в углах и чётко такой алгортим не отработает.

    Как решается такая проблема? Из своих мыслей есть мысль сделать какой-то канвас2 в виде квадратного канваса с дыркой в центре в виде этого моего первого канваса. Только я не знаю,как можно это сделать.
    Сожет есть какие-то ещё решения проблемы?

    15 марта 2014 г. 12:53

Все ответы

  • Судя по всему,мне надо что-то вроде этого:

    http://professorweb.ru/my/WPF/graphics_and_animation/level13/13_3.php

    Есть ли что-то подобное для приложений магазина? Или как-то по-другому можно исключить вылезание за границы при рисовании?

    16 марта 2014 г. 11:35
  • Неужели нет никакого решения? 
    17 марта 2014 г. 16:15
  • Соберите, пожалуйста, семпл - так хоть можно будет поклацать и легче будет найти проблему.
    21 марта 2014 г. 15:39