Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перерисовка элементов формы

1.7K
18 сентября 2005 года
AndrewSha
64 / / 13.01.2003
Вопрос не сильно принципиальный, но...
Кинул на форму TTabbedNotebook, сделал Align ему clAll, Создал несколько страниц и пр.
Теперь вопрос, какого фига он перерисовывается весь, противно моргая при этом, когда я изменяю размер формы, т.е. тяну за правый нижний угол ?
9.3K
22 сентября 2005 года
viv
21 / / 20.04.2005
Цитата:
Originally posted by AndrewSha
Вопрос не сильно принципиальный, но...
Кинул на форму TTabbedNotebook, сделал Align ему clAll, Создал несколько страниц и пр.
Теперь вопрос, какого фига он перерисовывается весь, противно моргая при этом, когда я изменяю размер формы, т.е. тяну за правый нижний угол ?



А как ты хотел?!
Размеры изменились, надо перерисовать.
У тебя могут на нем быть элементы управления, которые тоже изменили свой размер или положение.

748
22 сентября 2005 года
AlphaOmega
159 / / 28.09.2004
Кстати, такой же блинкующий баг замечен не только при изменениий размеров - если создать цикл, перекрашивающий цвет объекта (плавно), то всё равно оно мигает и выглядет не столь привлекателно, как если бы такая же вещь была бы сделана в игре (Direct3D/DirectDraw/OpenGL).
Может как-то эту перерисовку можно как-нить смягчить?
362
22 сентября 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by AlphaOmega
Может как-то эту перерисовку можно как-нить смягчить?



Не знаю поможет ли в данном конкретном случае, но можно попробовать так:

 
Код:
LockWindowUpdate(HWND/*окно, которое перерисовываем*/)
try
{
// чего-то перерисовываем
}
__finally
{
LockWindowUpdate(NULL);
}
748
22 сентября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by _kolyan
Не знаю поможет ли в данном конкретном случае, но можно попробовать так:
 
Код:
LockWindowUpdate(HWND/*окно, которое перерисовываем*/)
try
{
// чего-то перерисовываем
}
__finally
{
LockWindowUpdate(NULL);
}



Правильно ли я понял, что __finally это тот же самый catch, но используемый ВСЕГДА, а не только в случае ошибок?

Кстати, это дело не пойдёт - тогда пока идёт процесс, мы ничего не увидим - пропадает весь смысл плавного изменения размеров или цвета.

Просто по стандарту раздражает следующий баг при апдейте объекта:
1. иногда на 1 кадр он исчезает
2. иногда такое впечатление, что половина объекта со старым размером/цветом, а другая половина - с новым :(

10
23 сентября 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by AlphaOmega
2. иногда такое впечатление, что половина объекта со старым размером/цветом, а другая половина - с новым :(


Так что насчет буферизации?

362
23 сентября 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by AlphaOmega
Правильно ли я понял, что __finally это тот же самый catch, но используемый ВСЕГДА, а не только в случае ошибок?



Точно, как раз оно и сеть.

Цитата:
Originally posted by AlphaOmega
Кстати, это дело не пойдёт - тогда пока идёт процесс, мы ничего не увидим - пропадает весь смысл плавного изменения размеров или цвета.



Да, для плавной перерисовки конечно не подойдет...

1.7K
23 сентября 2005 года
AndrewSha
64 / / 13.01.2003
Вобщем дело ясное, что дело тёмное.
На мой взгляд мигат из-за того, что прорисовывает все компоненты, начиная с самого нижнего, даже если они не видны. Вопрос в том как сделать так чтоб нижние компоненты не перерисовывались (в данном случае это только канва формы). ControlStyle = clOpaque для формы не помог...
299
23 сентября 2005 года
3D Bob
885 / / 18.04.2005
Окно уже создается со свойствами перерисовки, если начинать двигать его.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог