У меня есть .png файл, который я хочу рисовать, проблема в том, что я рисую этот png каждые 1/10 секунды, так что это 10 раз в секунду. Этот png рисуется с координатой X и Y как ее средняя точка, поэтому середина изображения представляет собой координаты X и Y.Неверный рисунок с использованием gdi +
Используя этот код:
private void frmMap_Paint(object sender, PaintEventArgs e)
{
Bitmap FlashLight = new Bitmap(
Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + @"light.png"), 4000, 2160);
e.Graphics.DrawImage(FlashLight, new Point(mapX, mapY));
}
проблема, хотя, при рисовании этого Png 10 раз в секунду, при изменении X и Y координаты результатов в много мерцания.
Есть ли у кого-нибудь идеи о том, как уменьшить или удалить мерцание? Я просмотрел рисунок растрового изображения и загрузил его после его рисования, я понятия не имею, как это сделать.
Я также посмотрел на двойную буферизацию, и я снова не знаю, как это использовать, чтобы уменьшить мерцание.
Похоже, вы рисуете на Форме. Он имеет свойство «DoubleBuffered», что является первым шагом. Но не надейтесь на слишком много; использование Winforms для анимации довольно ограничено. – TaW
Кроме того, вы перезагружаете растровое изображение на каждой итерации красок. Это не расточительно. Сделайте это только один раз. – Rotem
@TaW Что вы рекомендовали бы использовать для этой анимации? Поскольку я просто перерисовываю png в новом месте, но проблема с перерисовкой заключается в том, что экран становится белым, а весь png перерисовывается. Это не должно быть хорошей анимацией, она может быть короткой, но просто не мерцает так много. – BramSnoek