Drag & Drop объектов в Silverlight

Решил реализовать одну забавную функцию. Drag & Drop используется в игрушках, в настольных приложениях. Везде, где надо что-то и куда-то перемещать :)

Создаем объект, я выбрал Rectangle. Смотрите, что вам ближе.

Далее переходим непосредственно к программированию.

 

public MainPage()
{
    InitializeComponent();    //Инициализация
    this.myrect.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(myrect_MouseLeftButtonDown);   //Добавляем событие на нажатие кнопки мыши
    this.myrect.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(myrect_MouseLeftButtonUp);   //Добавляем событие на тот момент, когда вы отпускаете кнопку мыши
    this.myrect.MouseMove += new System.Windows.Input.MouseEventHandler(myrect_MouseMove);   //Добавляем событие, когда перемещаем объект
}
private Boolean ismyRectMouseCapture = false;    //Нам нужна вспомогательная переменная, чтобы понять, “зацепили” мы или нет наш объект!
private Point clickPosition;   //Вспомогательная переменная для определения положения указателя мыши
private void myrect_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    clickPosition = e.GetPosition(sender as UIElement);   //
    this.myrect.CaptureMouse();
    ismyRectMouseCapture = true;
}

private void myrect_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    this.myrect.ReleaseMouseCapture();
    ismyRectMouseCapture = false;
}

private void myrect_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
    if (ismyRectMouseCapture)
    {
        this.myTranslateTransform.X = e.GetPosition(this).X-clickPosition.X-(myrect.Width/2); //Думаю тут все понятно =)
        this.myTranslateTransform.Y = e.GetPosition(this).Y-clickPosition.Y-(myrect.Height/2);
    }
}

0 коммент.:

Отправить комментарий