Вниз
Скачать: CL | DM;

Перерисовка окна   Найти похожие ветки 

 
Paladin ©   (2003-08-27 12:52) [0]

Перерисовка окна

Жутко колбасит контролы на окне, во время его переисовки, вызваной изменением размеров формы.
Господа, помогите избавиться от этого жуткого "прыганья" контролов!

Имеется форма, с закругленными углами.
Написана своя панель (наследник то TCustomPanel).
Панель также имеет закругленные углы, да еще и свою отрисовку - довольно сложную.
В результате панель выглядит как объемная с плавными градиентами по краям.

Форма состоит из этих панелей. Одни вложены в другие.
Все панели выравниваються и якоряться.
На панелях располоджены контролы, например, TDrawingGrid

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

Всяческие DoubleBuffered не помогают.
Если запретить отрисовку окна при помощи LockWindowUpdate, то все работает нормально, за исключением того,
что все остальные окана начинают перерисовываться, т.е. при изменении размеров формы, несколько раз перерисовываются весь рабочий стол.
Такой вариант не подходит.

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

Помогите, господа!


 
Paladin ©   (2003-08-27 18:27) [1]

Эта задача сразу появляется, когда необходимо немного разукрасить окна...


 
Anatoly P   (2003-08-27 18:47) [2]

Пробовал .DoubleBuffered ?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
4-24746
MishaS
2003-07-07 17:15
2003.09.08
Как определить высоту заголовка формы


1-24477
Unif
2003-08-27 18:31
2003.09.08
параметры командной строки


7-24718
-=Vlad=-
2003-06-20 12:08
2003.09.08
Распознавание поднятия трубки


11-24402
Ajax
2003-01-01 19:15
2003.09.08
Скриншот из программы


14-24646
SerVel
2003-08-21 18:33
2003.09.08
interrupt




   Наверх