_Q12_ Ответов: 0

Перемещение мыши по обновлению таймера в событии paint


Когда я перемещаю мышь, изображение, связанное с ней, перемещается так, как должно, так что никаких проблем. Но RotatingFlash(); который является muzzleFlash.Paint(sender, e); не вращается вообще, пока я не перестану двигать мышью. Если я не двигаю мышь, вспышка вращается.
Если это обычная ошибка, пожалуйста, сообщите мне, что я делаю не так.
Я думаю, что решение может быть связано с потоками...но, возможно, я слишком много думаю об этом.
Поэтому я хочу, чтобы вы сначала внесли свой вклад.

Что я уже пробовал:

private void canvas_Paint(object sender, PaintEventArgs e)
{
    background.Paint(sender, e);
    enemy01.Paint(sender, e);
    muzzleFlash.Paint(sender, e);
    e.Graphics.DrawString("SCORE " + score, new Font("Arial", 10), new SolidBrush(Color.Black), new PointF(10f, 5f));
    if (WinScreenOn)
    {
        e.Graphics.Clear(Color.DarkRed);
        e.Graphics.DrawString("You Win", new Font("Arial", 50), new SolidBrush(Color.Black), new PointF(10f, 5f));
        e.Graphics.DrawString("Next Level ", new Font("Arial", 10), new SolidBrush(Color.Black), new PointF(100f, 100f));
    }
    mousetarget.Paint(sender, e);
}


void timer1_Tick(object sender, EventArgs e)
{
    RotatingFlash();
    Refresh();
}


private void canvas_MouseMove(object sender, MouseEventArgs e)
{
    mousetarget.X = e.X; mousetarget.Y = e.Y;
    mousetarget.Move(sender, e); Refresh();
}

Gerry Schmitz

Перемещение мыши выполняется с более высоким приоритетом.

Отключите таймер при перемещении мыши и обновите его при перемещении мыши.

Daniele Rota Nodari

Вы пробовали аннулировать вместо обновления?
Восстанавливает ли RotatingFlash изображение? Проверяет ли он текущую метку времени (например, дату/время, тики, секундомер или что-то еще...) или просто увеличивает счетчик кадров?

0 Ответов