Я только что сделал некоторый простой код для отслеживания смещения мыши от того места, где Mouse Down находится в его текущем положении при перемещении мыши внутри PictureBox.Я вывожу разницу на метку, и она работает нормально.
Итак, скажем, я mousedown в X: 20 Y: 20, затем переместите мышь влево на 5. Мой результат X: 15 Y: 20.
Теперь проблема в том, когда я беру эти результаты (diffX и diffY) и добавляю их к целому числу (testOne и testTwo).Результат экспоненциально отличается.
Наиболее актуально то, что когда я держу мышь в том же положении, не перемещая ее, а просто удерживая кнопку.Результаты продолжают расти.
Я сократил свою проблему до следующего кода:
Point startPoint = new Point();
bool dragging = false;
int testOne = 30;
int testTwo = 30;
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
int diffX = (pictureBox1.PointToClient(e.Location).X - startPoint.X);
int diffY = (pictureBox1.PointToClient(e.Location).Y - startPoint.Y);
label9.Text = diffX.ToString(); //Works, shows desired result
label10.Text = diffY.ToString(); //also works fine
testOne = (testOne + diffX); //Issue here
testTwo = (testTwo + diffY); //and here
label11.Text = (testOne).ToString(); //Unexpected results output
label12.Text = (testTwo).ToString();
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (!dragging) //Incase the mouse down was repeating, it's not
{
startPoint = pictureBox1.PointToClient(e.Location);
dragging = true;
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (dragging)
dragging = false;
}
Я использую C # WinForms в VS 2008, Framework 3.5
любойпонимание было бы здорово, может быть, это ошибка или я просто упустил что-то простое.Любые идеи или если вы можете воспроизвести.
Приветствия
Крейг