![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мерцание раб области [D7, XP]
fics © (2007-12-10 12:41:00)Здравствуйте уважаемые. Такой вот вопрос к вам, есть
ScrollBox в нём Panel 6000 на 3000 px на Panel-е PaintBox (align=alClient) Создаю в этой области разные компоненты, рисую линии и тд. Но как избежать мерцания, я знаю что можно использовать DaubleBuffered для Parent, то есть Panel - a, но для такой рабочей области DaubleBuffered сильно тормозит работу. не пойму как использовать тогда Invalidate или вообще как решить эту проблему?
homm (2007-12-10 15:18:00) [1]> [13] Рамиль © (10.12.07 15:14)
Не заметил, что предъидущие ответы тоже твои. В свете [1] все встает на свои места.
Рамиль (2007-12-10 15:14:00) [2]
> homm © (10.12.07 15:09) [11]
Автор жаловался, что при DoubleBuffered тормозит.
Если рисовать только видимую область и выкинуть TScrollBox тормозить не будет.
Так понятнее? Разжуй и в рот еще положи что ли?
Dib@zol (2007-12-10 15:11:00) [3]В онПаинте проходишь по свем дочерним контролам своего СкроллБокса и узнаёшь какой у каждого регион. И пользуешь ValidateRect. А потом вручную подаёшь дочерним контролам команду на перерисовку.
homm (2007-12-10 15:09:00) [4]> [10] Рамиль © (10.12.07 15:08)
> Ну, прочитал еще раз и что?
А то, что автор в курсе сего замечательного свойства. Но ведь это же не имеет значения, главное что ты умнее.
Рамиль (2007-12-10 15:08:00) [5]
> fics (10.12.07 13:49) [8]
Не будет, если последуешь советам [1] и [3].
> homm © (10.12.07 13:49) [9]
Ну, прочитал еще раз и что?
fics (2007-12-10 13:49:00) [6]но будет тормозить!!!
homm (2007-12-10 13:49:00) [7]> [7] Рамиль © (10.12.07 13:44)
> Поставишь DoubleBuffered и не будет мерцать.
А теперь прочти все сообщение, а не только первую строку.
Рамиль (2007-12-10 13:44:00) [8]
> Ну а как же сделать чтобы не мерцало?
Поставишь DoubleBuffered и не будет мерцать.
{RASkov} (2007-12-10 13:08:00) [9]> [5] fics (10.12.07 13:06)
Рисуй видимую(!) область во временном битмапе, а потом целиком копируй на канву....
fics (2007-12-10 13:06:00) [10]Ну а как же сделать чтобы не мерцало?
fics (2007-12-10 13:04:00) [11]И то правильно.
Рамиль (2007-12-10 13:01:00) [12]Не нужно тебе все перерисовывать. Зачем рисовать то, что не видно?
fics (2007-12-10 12:58:00) [13]Да причём монитор, просто схему нужно составлять а не хватает места.
А как это сделать- перерисовывть только недействительную область?
Ну мне нужно всё перерисовывать, а эфект DoubleBufer хотелось бы иметь только для видимой области.
Рамиль (2007-12-10 12:50:00) [14]Надо рисовать только в пределах видимой пользователю области, а не 6000 на 3000. Где ты такой монитор видел?
И в OnPaint перерисовывать только недействительную область.