@AAGR
Занимаюсь программированиям

Как очистить Panel от нарисованого, нестирая при етом фонового рисунка?

Panel.Invalidate(); Не помогает. Потому что я перерисовываю несколько раз в секунду, и оно перерисовывается когда клавиша отпущена.
Panel.Clear(Color.Teal); Не помогает. Зарисовывает весь экран
Panel.Clear(Color.FromArgb(255)); Не помогает. Так же как и пункт выше. Зарисовиває экран, и фоновое изображение.
Panel.Refresh(); Помогает, но перерисовывает и фоновое изображение.

Что мне делать?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Фоновый рисунок помещаете в bitmap и при перерисовке из него отрисовываете на канве контрола. Отрисовывайте только то, что необходимо:
protected override void OnPaint(PaintEventArgs e)
{
     base.OnPaint(e);
     var g = e.Graphics;
     var clipRect = e.ClipRectangle;
     ...
}

Отрисовывать тоже лучше сначала на отдельном bitmap из уже из него все перенести в канву контрола. (double buffering)

Старайтесь и стирать только ту часть контрола, которая реально поменялась.
Invalidate(Rectangle.Round(rect));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы