winforms to drag picturebox
private int lastDownX;На моей машине все выглядит пристойно.
private int lastDownY;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
lastDownX = e.X;
lastDownY = e.Y;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if e.Button & MouseButtons.Left) == MouseButtons.Left)
{
this.pictureBox1.Left += (e.X - lastDownX);
this.pictureBox1.Top += (e.Y - lastDownY);
}
}
раньше вместо :
this.pictureBox1.Left += (e.X - lastDownX);
this.pictureBox1.Top += (e.Y - lastDownY);
я юзал
this.pictureBox1.Location.X += (e.X - lastDownX);
this.pictureBox1.Location.Y += (e.Y - lastDownY);
и нифигова тормозило. Теперь ок!
this.pictureBox1.Location.X += (e.X - lastDownX);
this.pictureBox1.Location.Y += (e.Y - lastDownY);
даже не компилируется. А такой:
this.pictureBox1.Location = new Point(
this.pictureBox1.Left + e.X - lastDownX,
this.pictureBox1.Top + e.Y - lastDownY);
работает отлично.
м-да, там у меня чуть по другому было.. но это уже не важно
Оставить комментарий
anton7805
Среда vs 2005 ,разбираюсь с winforms. Мне нужно иметь возможность перемещать picturebox попанели при нажатой левой кнопке мыши.Что я делаю-
1.при onMouseDown запоминаю положение мыши
2. onMouseMove - просто перерисовываю picturebox с новыми координатами
3. Завершаю операцию.
Но уж очень убого получается...если мышь дергать быстро , то контрол не успевает перерисовываться.
Свойства enabledrag у picturebox'а оказывается нет ,также как и события ondrag....
Как можно по другому реализовать это дело?