Перемещение мыши по обновлению таймера в событии 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 изображение? Проверяет ли он текущую метку времени (например, дату/время, тики, секундомер или что-то еще...) или просто увеличивает счетчик кадров?