Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > мерцание изображение |
Автор: chudak 4.3.2008, 02:42 | ||
почитал тут как с мерцанием справиться, непомогает!!! может я чего нетак сделал???
данный код просто тренировачный, и смысловой нагрузки не несет!!! скажите что еще сделать чтобы не мерцала при прокрутки скролла!!! Заранее спасибо!!! |
Автор: Alekz 4.3.2008, 12:31 |
Уже было: http://forum.vingrad.ru/forum/topic-198749/kw-%D0%BC%D0%B5%D1%80%D1%86%D0%B0%D0%BD%D0%B8%D0%B5.html |
Автор: chudak 5.3.2008, 19:33 | ||
ничего не выходит, форма без наваротов, мерцание прежнее!!!
что делать? |
Автор: Crimp 6.3.2008, 10:33 | ||
вместо
сделай override OnPaint. и Refresh(); очень тяжелая операция, используй Invalidate(); |
Автор: chudak 6.3.2008, 13:04 |
попрежнему мерцает ![]() а самое отвратительное то, что я непонимаю почему |
Автор: zaver 11.3.2008, 01:23 | ||
Добавлено через 1 минуту и 24 секунды я больше люблю первый вариант, второй сильно сложный для такой маленькой проблемы |
Автор: Experimenter 11.3.2008, 14:42 | ||
chudak, создай маленький класс панели:
Потом, в методе Invalidate() есть перегрузка Invalidate(Rectangle rect). Используй ее для перерисовки только видимой части панели. |
Автор: Егоша 7.4.2008, 22:26 | ||
Вопрос, а как тогда в поток передать e.Graphics основной формы ? Как сататическое поле его хранить и обновлять в OnPaint - не получилось, я так понял из-за того что часто обновляется обьект Graphics и возникает конфликт... |
Автор: vponomarov 8.4.2008, 09:21 |
можно вместо вызова Invalidate() напрямую вызывать метод перерисовки мерцание возникает из-за того, что Invalidate() полностью очищаетизображение, а потом уже оно перерисовывается. если напрямую вызывать перерисовку, то очистки происходить не будет, будет рисовать по-верх старого изображения. если при перерисовке старое изображение полностью накрывается новым, то проблем с артефактами не будет ![]() |