locked
И снова тащим картинку RRS feed

  • Вопрос

  • Всем доброго дня) И снова пришлось вернуться к этому вопросу, правда уже немного с другой стороны. В прошлый раз мне помогли с GridView,то бишь с пететаскиванием элемента из одного GridView в другой. Сегодня я понял, что в моем приложении не нужны никакие GridView, Listview и прочее. Мне нужно просто перемещение картинки из одного места на странице в другое.  В интернете нашел код, который как раз реализует эту возможность, правда есть один нюанс, я пока не очень богат опытом программирования и с отслеживанием текущей позиции пока не подружился.
    Вот код, который я решил использовать:
    Image holding = null;
            Point imageOffset;
         
    
            private void imagepointer_pressed(object sender, PointerRoutedEventArgs e)
            {
                holding = sender as Image;
                imageOffset = e.GetCurrentPoint(holding).Position;
            }
    
            private void imagepointer_released(object sender, PointerRoutedEventArgs e)
            {
                holding = null;
             
            }
    
            private void imagepointer_moved(object sender, PointerRoutedEventArgs e)
            {
                if (holding != null)
                { var position = e.GetCurrentPoint(sender as Grid).Position;
                holding.Margin = new Thickness(position.X - imageOffset.X, position.Y - imageOffset.Y, 0, 0);
                }
            }
    Подскажите, пожалуйста, как на PointerRealesed, отследить, если рисунок переместили в нужную зону, то его там и оставить, иначе вернуть в прежнее положение. И хотелось бы чтобы у зоны, куда нужно переместить рисунок, были не строгие ограничения, а радиус что-ли, погрешность.
    6 октября 2013 г. 9:59

Ответы

  • Справился сам
     Image holding = null;
            Point imageOffset;
         
    
            private void imagepointer_pressed(object sender, PointerRoutedEventArgs e)
            {
                holding = sender as Image;
                imageOffset = e.GetCurrentPoint(holding).Position;
            }
    
            private void imagereleased_pressed(object sender, PointerRoutedEventArgs e)
            {
                holding = null;
                if (may == 0) { bee.Margin = new Thickness(1148, 10, 0, 0); } else { bee.Margin = new Thickness(0, 602, 0, 0); but.Play(); }
                
            }
    
            private void imagepointer_moved(object sender, PointerRoutedEventArgs e)
            {
                if (holding != null)
                { var position = e.GetCurrentPoint(sender as Grid).Position;
                holding.Margin = new Thickness(position.X - imageOffset.X, position.Y - imageOffset.Y, 0, 0);
                if (Math.Abs(position.X - imageOffset.X - 10) < 40 && Math.Abs(position.Y - imageOffset.Y - 602) < 40)
                {
                    may = 1;
                } 
               
                }
            }

    • Помечено в качестве ответа Petr Kononov 6 октября 2013 г. 13:40
    6 октября 2013 г. 13:40