Итак, у меня есть PictureBox
, и пользователь должен перетаскивать курсор внутри него в направлении, указанном стрелкой (в PictureBox
), но я не уверен, как мне установить координаты, чтобы убедиться, что пользователь перетащил правильно направление (вверх, вниз, вправо или влево).
private void picArrow_MouseDown(object sender, MouseEventArgs e)
{
mPointDown = new Point(e.X, e.Y);
//lblTest.Text = "X: " + mPointDown.X.ToString() + " Y: " + mPointDown.Y.ToString();
}
private void picArrow_MouseUp(object sender, MouseEventArgs e)
{
lblTest.Text += " " + " X: " + e.X.ToString() + " Y: " + e.Y.ToString();
//MessageBox.Show("Entered mouseup");
//rnd_Arr refers to the number of the arrow being shown, 0 = towards the right
if (rnd_Arr == 0 && mPointDown.X >= 0 && mPointDown.Y >= 0 && e.X >= 40 && e.Y >= 0)
{
//some code
}
else
{
MessageBox.Show("DONE!");
}
}
И я знаю, что этот код не работает, потому что даже если пользователь перетаскивает вниз (когда он должен перетаскивать вверх), он все равно принимает его и увеличивает счет.
- Я не ставлю слишком много ограничений. Это не обязательно должна быть идеально прямая линия или начинаться и заканчиваться в точном месте. Пока пользователь перетаскивает внутри
PictureBox
и перетаскивает в правильном направлении или, по крайней мере, достигает минимальной длины, чтобы убедиться, что пользователь перетаскивает в правильном направлении, например: Показанная стрелка указывает вправо. Пользователю не нужно перетаскивать стрелку полностью, если он перетащит по горизонтали более 40 пикселей (а вся длина стрелки составляет, скажем, 80 пикселей), то это добавит балл к его счету. Тем не менее, я обдумываю эту часть, если я просто должен быть более требовательным и требовать от пользователя перетаскивания до конца.
Должен ли я удалить события мыши для
PictureBox
и вместо этого добавить события мыши для формы? Благодарю вас!