LINUX.ORG.RU

прозрачное окно в Xlib


1

0

Хочу сделать полностью прозрачное окно в Xlib и нарисовать текст. По-умолчанию, цвет фона окна не установлен, значит он прозрачный. Все нормально работает, появляется прозрачное окно с текстом, но как доходит до обработки expose event получается фигня.

Я не знаю как перерисовать окно, сохранив при этом прозрачность фона. пробовал делать Unmap, потом Map, так окно при запуске помигает и тухнет навеки. Как это можно сделать? Может прозрачные окна по-другому делаются?

★★★★★

Ну проще всего на пример работающий посмотреть, например, xeyes из самих x-ов.

Ключевое слово - xshape extension, ключевая функция XShapeCombineMask.

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

XShape не пойдет, так как надо полноценное квадратное окно, чтобы можно было щелкать по прозрачному месту.

init ★★★★★
() автор топика

можешь сделать такой трицк - когда получаешь expose, ты временно прячешь свое окно(UnmapWindow), потом транслейтишь геометрию своего окна в геометрию рутового(TranslateCoordinates), грабишь image(GetImage) с полученной геометрией и свойством include inferiors в GC, мапишь свое окно(MapWindow), полученный image заливаешь себе на окно(PutImage) и рисуешь свою хрень поверх этого безобразия. Работать будет супер медленно .. лучше юзать shape и грабить крысу в синхронном режиме и если event не тебе преназначен то пропускать его (AllowEvents).

удачи!

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