MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Плавная графика в C# (Windows Forms)"
Answer 717438
Рекомендации по правильной реализации движущейся графики в WinForms таковы.
Определиться с оптимальным периодом перерисовки. Все зависит от ситуации, но меньше 10 мс для стандартных таймеров он точно не должен быть. Затем соответственно определиться, какое расстояние в пикселях объект должен проходить за этот период для получения желаемого эффекта (назовем
pix_per_tick
)Вместо PictureBox рисовать в чем-то полегче, например Panel.
В обработчике таймера поместить код движения и обновления panel
private void timer1_Tick(object sender, EventArgs e) { p.Y -= pix_per_tick; panel1.Refresh(); }
В обработчике OnPaint поместить код рисования
Включить двойную буферизацию на уровне ОС, добавив в код формы следующее:
protected override CreateParams CreateParams { get { var cp = base.CreateParams; cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED return cp; } }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.