Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение кнопки мышью, проблема в реализации перемещения кнопки 
:(
    Опции темы
Artefack
Дата 4.2.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.2.2010

Репутация: нет
Всего: нет



Всем привет! Препод задал написать для автомата по экзу аналогичную фишку вот этой visuwords.com только на SL и для Русского языка.
Так как новичек в SL то сразу же появились вопросы))
Как двигать мышью button, или, как лучший вариант, есть ли стандартная функция добавления текста в Rectangle или Ellipse (их я разобрался как двигать)?
для перемещения прямоугольника использую стандартные события mouseleftbuttondown mouseleftbuttonup mousemove. А вот кнопка почему то не реагирует на mousemove((
Как создать стрелки между объектами?
И последний для меня более непонятный вопрос как передвигать их все влево с помощью мыши(см. визувордс).

У кого какие идеи?)) 
Заранее спасибо за помощь, если сможете мне в этом вопросе помочь
Код

  double beginX,beginY,currX,currY;
        bool isMouseDown = false;

        private void onMouseDown(Object sender, MouseButtonEventArgs e)
        {
            Rectangle rec = sender as Rectangle;
            beginX = e.GetPosition(this).X;
            beginY = e.GetPosition(this).Y;
            isMouseDown = true;
            rec.CaptureMouse();
        }

        private void onMouseMove(Object sender, MouseButtonEventArgs e)
        {
            if (isMouseDown)
            {
                Rectangle rec = sender as Rectangle;
                currX = e.GetPosition(this).X;
                currY = e.GetPosition(this).Y;
                rec.SetValue(Canvas.LeftProperty, currX);
                rec.SetValue(Canvas.TopProperty, currY);
                //sender.SetValue(Canvas.TopProperty, Convert.ToDouble(Canvas.TopProperty) + currY - beginY);
                //beginY = currY;
                //beginX = currX;
            }
        }

        private void onMouseUp(Object sender, MouseButtonEventArgs e)
        {
            beginY = currY;
            beginX = currX;
            Rectangle rec = sender as Rectangle;
            isMouseDown = false;
            rec.ReleaseMouseCapture();

        }



это перемещает прямоугольник, а вот это мои скудные попытки переместить кнопку:
Код

private void onMouseDown(Object sender, MouseButtonEventArgs e)
        {
            Button but = sender as Button;
            beginX = Canvas.GetLeft(but);//e.GetPosition(this).X;
            beginY = Canvas.GetTop(but);// e.GetPosition(this).Y;
            isMouseDown = true;
            but.CaptureMouse();
        }

        private void onMouseMove(Object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                Button but = sender as Button;
                currX = e.GetPosition(this).X;
                currY = e.GetPosition(this).Y;
                Canvas.SetLeft(but, currX);// rec.SetValue(Canvas.LeftProperty, currX);
                Canvas.SetTop(but, currY);//rec.SetValue(Canvas.TopProperty, currY);
                //sender.SetValue(Canvas.TopProperty, Convert.ToDouble(Canvas.TopProperty) + currY - beginY);
                //beginY = currY;
                //beginX = currX;
            }
        }

        private void onMouseUp(Object sender, MouseButtonEventArgs e)
        {
            beginY = currY;
            beginX = currX;
            Button but = sender as Button;
            isMouseDown = false;
            but.ReleaseMouseCapture();

        }

Однако кнопка двигаться не хочет;( Опять же повторюсь, если есть какая-нить ф-ия для подписи прямоугольника- так даже лучше и проще)) 
PM MAIL   Вверх
Artefack
Дата 6.2.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.2.2010

Репутация: нет
Всего: нет



че неужто ни у кого идей нет?((
PM MAIL   Вверх
dazy
Дата 7.2.2010, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Проще сделать свой контрол из фигуры (пусть элипс) и текстблока,  а его уже двигать мышкой.

Кстати, двигать мышкой вообще можно без строчки кода.
В блендере применяем к нужному контролу MouseDragElementBehavior, и все, получаем возможность таскать объект мышкой.

С кнопкой проблемка, она при нажатии думает что ее пытаются кликнуть, и не дает себя перетаскивать. В общем, чем разбираться с кнопкой, проще сделать свой контрол, потом проще будет.
PM MAIL   Вверх
dazy
Дата 20.2.2010, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 15.9.2006

Репутация: 3
Всего: 8



Ваше? Если нет, то пригодится.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0755 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.