Решил реализовать одну забавную функцию. 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 коммент.:
Отправить комментарий