LINUX.ORG.RU

Перерисовка текстуры окна при OnRedraw

 


0

1

пишу простенький фреймворк. есть проблема - когда ресайзится окно, то приходит on resize событие, на которое я подвешен. В обработчике делаю следующее: создаю новую текстуру для бэка формы, применяю к ней текстурные правила, рисую на форме. Дело упирается в то, что это занимает много времени - если ресайзить быстро и часто - форма начинает «мигать» - то ли менеджер окон пытается что-то свое нарисовать, то ли я не успеваю за такой период пересоздать текстуру. скорее второе, потому что если дергать много, то после того как прекратить текстура некоторое время колбасится, пока все события ресайза не обработаются.

какие способы решения есть?

мои варианты: 1) на приходе «on resize» стартовать таймер, который сработает через секунду (0.5, 0.2?). Каждый onresize таймер выставляет заново, а когда таймер все-таки сработает - тогда и перерисовывать. 2) иметь текстуру много больше формы, рисовать ее целиком при ресайзе, в углу цифирьки с размером формы.



Последнее исправление: Moreo (всего исправлений: 1)

Что значит:«создаю новую текстуру для бэка формы»? Т.е. при каждом событии ресайза XCreatePixmap на размер формы? Тогда медленно будет. Надо хотя бы с небольшим запасом ее создавать, что уж не на каждый чих пересоздавать пикмап. И потом, ЕМНИП, вроде для окна можно указать пиксмап, которым это окно будет мозаично заполняться.

zloy_starper ★★★
()
Ответ на: комментарий от zloy_starper

Т.е. при каждом событии ресайза XCreatePixmap на размер формы? Тогда медленно будет.

А как иначе? Вот захотели градиентный бек формы в теме виджетов. Как мне вертикальный градиент непередлывать?

что уж не на каждый чих пересоздавать пикмап.

А как иначе?

И потом, ЕМНИП, вроде для окна можно указать пиксмап, которым это окно будет мозаично заполняться.

Оооо, где?

Moreo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.