2015-07-15 2 views
2

Могу ли я иметь окно с альфой, которое я могу щелкнуть через 100% прозрачные части окна? Я ищу общее решение, не основанное на расширении форм.X11 прозрачное окно: только через клик, где alpha = 0

  • В Windows это делается установкой WS_EX_TRANSPARENT.
  • В OSX это делается установкой setIgnoresMouseEvents (true).
  • В X11 это делается ...?

ответ

2

X11 Nonrectangular Window Shape Extension - ответ, который вы ищете.

Возможно, вы смущаетесь описанием этого протокола как «расширения». X11 реализует множество функций в качестве расширений базового протокола. Это не означает, что эти функции нестандартны или что их следует избегать; это просто означает, что они не были частью X11, когда он был выпущен в 1987 году.

+0

У меня нет проблемы с тем фактом, что это расширение, но с тем, что я должен определить битную маску для всего окно, которое я должен перерисовывать каждый раз, когда само окно перерисовывается. Таким образом, нет более прямого способа, например, в Windows и OSX? – cap

+0

Не то, чтобы я знал. Сожалею. Имейте в виду, что если вы не используете компоновщик X-сервера, сервер должен знать, какой формой будет ваше окно для рисования клипов на любых окнах под ним. Если он должен был «спросить» ваше приложение о каждом пикселе, нарисованном под вашим окном, производительность будет мрачной. – duskwuff

+0

Вам не нужно перерисовывать маску, когда обновляется содержимое окна, они являются отдельными (но могут потребоваться, если их изменить размер) –

Смежные вопросы