| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Как почистить CreateGraphics изображение |
| Автор: krewin 27.8.2009, 12:39 |
| Panel2.CreateGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias Dim nn As Image = Image.FromFile(CurDir() & "\img\1.jpeg") Panel2.CreateGraphics.DrawImage(nn, 230, 500) Вот простой код рисует изображение на панели которая имеет фоновый рисунок. Всю очень просто. Проблема втом как теперь удалить этот русунок на фоне ???????????? Я пробывал просто обновит фоновый рисунок , он очищает изображение но смотреть на это обновление просто не приято оно мигает ! Сужествуют другие способы чтобы не трогать фоновый рисунок ? |
| Автор: diadiavova 27.8.2009, 18:06 | ||||
Для того чтобы прорисовать что-то в панели надо делать это в обработчике её события Paint, а объект Graphics получать из второго аргумента обработчика, а не создавать новый по всякому поводу и без.
Если надо иметь возможность менять рисунок, то тогда его надо передавать в обработчик при помощи свойства какого-нибудь, например так
Для очистки надо свойству передать Nothing, Если точку прорисовки тоже надо менять, то для неё тоже свойствоо создай(по той же схеме). |
| Автор: percilacus 16.9.2009, 20:45 |
| Чтоб не мерцало у контролов есть Protected свойство DoubleBuffered. Его надо установить в true. И рисовать в обработчике Paint этого контроля, используя при этом e.Graphics. Ну а чтобы получить доступ к DoubleBuffered, нужно создать свой класс и унаследовать Panel Очистить: nn.Dispose() Panel2.Invalidate() |
| Автор: diadiavova 16.9.2009, 20:52 |
| А двойная буферизация для прорисовки фонового изображения это не слишком? |
| Автор: percilacus 17.9.2009, 17:31 |
| diadiavova, он же говорит мерцает значит часто перерисовывает |
| Автор: diadiavova 17.9.2009, 17:33 |
Это иногда случается из-за того, что код кривой. В таких ситуациях двойная буферизация не помогает. |