Самопальный контрол - проблема с resize и anchor
От: Igor Trofimov  
Дата: 12.02.02 09:48
Оценка:
Сделал простейший контрол- попробовать. Наследник System.Windows.Forms.ContainerControl или как его там. В общем, как panel, только c бордюром.

Проблема. Чтобы он не мерцал, выставил ему стиль DoubleBuffer, а также (по хелпу) UserDraw и AllDrawInWM что-то в этом роде.
Иначе при изменении размеров мерцает жутко.

Кладу на форму, делаю ему Anchor=Left,Right. При таскании формы за правый край контрол....как бы это выразиться... ощутимо "отстает" от движения края формы. Со стандартными контролами (например) groupbox такого не происходит.

Где собака порылась? Могу прислать код, он маленький..

P.S. Ну все-таки как хорошо, когда есть сырци библиотек ;(

22.12.03 15:47: Перенесено модератором из '.NET' — AVK
Re: Самопальный контрол - проблема с resize и anchor
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.02 15:59
Оценка:
Здравствуйте Igor Trofimov, Вы писали:

IT>Где собака порылась? Могу прислать код, он маленький..


Выброси этот дабл-буферинг и перекрой эрэйс-быкграунд (мерцание это отрисавка несколько раз по одному и тому же месту). Именно зарисовка фона, обычно приводит к мерцанию. Естественно, что при отрисовке нужно чтобы зарисовываемые области не перекрывались.

IT>P.S. Ну все-таки как хорошо, когда есть сырци библиотек ;(


Да не плохо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Самопальный контрол - проблема с resize и anchor
От: Igor Trofimov  
Дата: 12.02.02 16:56
Оценка:
VD>Выброси этот дабл-буферинг и перекрой эрэйс-быкграунд

А что-то я такого метода не нашел. Имеется в виду OnPaintBackgroung ?

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

Такое ощущение, что а) OnResize/OnPaint доходит реже, чем надо б) Что рисование тормозит.

Собсвтенно, повторюсь.. Меня не мерцание волнует — оно DoubleBuffering'ом убирается полностью... Волнует странность поведения контрола при resize формы.

А есть где-нибудь какие-нибудь библиотечки контролов .NET с открытыми сырцами — хоть посмотреть!
Re[3]: Самопальный контрол - проблема с resize и anchor
От: Аноним  
Дата: 13.02.02 11:34
Оценка:
На самом деле все еще интереснее....
Я зря сказал, что со стандартными .NET контролами все в порядке. Не все в порядке. Точнее, не со всеми контролами. Почему-то Button, ListBox — нормально себя ведут, хорошо ресайзятсяи не мигают.

А вот GroupBox (Стандартный!) отвратительно мерцает.

Причем мерцает сильнее, чем GroupBox в Delphi-приложении с выключеным DoubleBuffering'ом (с включенным — там вообще все идеально).

Вопрос — что же это такое? Что же это за такие тормозные в плане отрисовки станджартные компоненты и методы?
Re[4]: Самопальный контрол - проблема с resize и anchor
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.02.02 23:48
Оценка:
Здравствуйте Аноним, Вы писали:

Все эти контролы сделаны как надстройка над обычными виндузными. Разберись как перехватывать сообшения... перехватит WM_PAINT и WM_ERASEBK (ну, как так его) и делай отрисовку на WinAPI, а эрейс нафиг посылай.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.