Во-первых, ни один из встроенных таймеров не имеет точности 1 мс. Я не повторяю и не копирую мой более старый ответ , но вижу ссылку на высокоточный таймер. Или посмотрите полный исходный код по адресу GitHub .
Во-вторых, использование элемента управления PictureBox
для пользовательского рендеринга является излишним. Если вы не используете возможности масштабирования / растяжения или не назначаете анимированный GIF-файл, он вам вообще не нужен. Гораздо эффективнее визуализировать анимацию в виде простого Panel
, например, используя событие Paint
. Вот как вы можете это сделать:
private void timer1_Tick(object sender, EventArgs e)
{
if (k == 41)
timer1.Enabled = false;
//Felix.Image = FelixBanner[k];
k++;
panelAnimation.Invalidate();
}
void panelAnimation_Paint(object sender, PaintEventArgs e)
{
// make sure "k" is a valid index even after playing the animation because the
// Paint event might be called whenever your form is resized or has to be repaint
var image = FelixBanner[k];
e.Graphics.DrawImage(image, 0, 0, image.Width, image.Height);
}