Re[2]: Перерисовка окна
От: ArtDenis Россия  
Дата: 27.08.03 15:22
Оценка:
Здравствуйте, Paladinm, Вы писали:

P>Здравствуй, Paladinm, Мы писали:


P>>Например, при увеличении размеров формы вправо, во время самого процесса, панели еще не успевают перерисоваться, а контролы уже успевают.

P>>Получается эффект, как будто контролы вылазят за границы формы.

P>>Предполагаю, что во время изменения размеров окна, вместо одного просчета будущего расположения контролов, с учетом выравниваний и якорей, и одной их финальной отрисовкой, происходит многократная перериовка контролов при выравнивании.


P>Нашел не очень красивое решение (на этом же форуме...)

P>Размер окна я изменяю при помощи MoveWindow( ...)
P>Так вот, всем контролам, которые колбасятся делаем WM_SETREDRAW:
P>
P>SendMessage( KolbasaCtrl.Handle, WM_SETREDRAW, 0, 0); // отмена перерисовки

P>MoveWindow( Handle, ...)                              // изменяем размеры окна

P>SendMessage( KolbasaCtrl.Handle, WM_SETREDRAW, 1, 0); // включение перерисовки
P>InvalidateRect( KolbasaCtrl.Handle, 0, false );       // рисуем контрол
P>

P>- И все, после этого колбаса заканчивается.

P>Конечно, лучше бы в память все контролы отрисовывать...

P>Может кто-то знает как?

Form->PaintTo(Bitmap->Canvas, 0, 0);
Form->Canvas->Draw(0, 0, Bitmap);


А перед этим создаёшь Bitmap типа TBitmap.

... << RSDN@Home 1.1 beta 1 >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.