Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2010, 10:21   #11
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Поясняю.
Windows принципиально не хранит изображения окон. Все окна в системе заново программно отрисовываются в тот момент, когда становятся видимыми (после восстановления из минимизации, вывода из-за границ экрана, "прохода" поверх них других окон и т.д.). Для этого окна в нужный момент получают сообщение WM_PAINT, что в VCL соответствует обработчику события OnPaint. Поэтому стандартный, рекомендуемый в учебниках по графике и реализованый во множестве программ способ - всё рисование по канве использовать только внутри процедуры OnPaint с учетом того, что это изображение может потребоваться в любой момент отрисовать заново.

Но в VCL существует обходной путь, позволяющий обойти эти ограничения. Если мы для рисования используем компонент TImage, то он буферизует внутри себя изменения, прорисованные по его канве, и в состоянии самостоятельно восстановить их при перерисовке. Поэтому такой способ получает всё большее распространение, хотя толком нигде не описан, а передается как "народное творчество". Теоретически существует вероятность, что создатели VCL когда-нибудь закроют такую особенность TImage, посчитав её багом..
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как установить границу абзаца stas116ru Microsoft Office Word 1 27.01.2010 22:58
Как избежать повторение одного и того же номера дважды CockPuncher Microsoft Office Excel 6 03.09.2009 09:53
Как в VBA определить нижнюю границу базы данных Leanna Microsoft Office Excel 8 28.11.2008 18:45
Яркий пример того, как НЕ НУЖНО оформлять интерфейс JTG Софт 6 17.10.2008 21:08
ошибка, после того как я создал запись 'fayl' ZhekON Общие вопросы Delphi 15 01.04.2007 13:39