Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Псевдопрозрачность - это термин, используемый дляклиентов системы X Window, которые имитируют видимость полупрозрачности или прозрачности , манипулируя тем же растровым изображением , которое было нарисовано в корневом окне , или путем указания X-серверу, что фоновое пиксельное изображение должно быть унаследовано от окна. родитель. [1]

Цель [ править ]

Традиционно, X Window System отставала от других оконных систем в добавлении просто приятных глаз или эстетических функций, таких как прозрачность окна . Это побудило разработчиков разрабатывать кладжи для преодоления этого ограничения.

Эта псевдопрозрачность, так называемая фоновая растровая карта корневого окна, видна (аналогично обоям рабочего стола ), а не какие-либо скрытые окна, позволяет пользователям делать окна менее впечатляющими (например, эмуляторы терминала , которые обычно содержат большие фрагменты текста. ), а также для интеграции внешнего вида окон с их темами рабочего стола.

Реализация [ править ]

Существует три распространенных метода достижения псевдопрозрачности с помощью Xlib , каждый из которых имеет свои преимущества и недостатки.

Родительский родственник [ править ]

Метод «родительский-относительный» используется XSetWindowBackgroundPixmap()для наследования фонового изображения родительского окна. К сожалению, используя этот метод, X-сервер позволяет выполнять очень мало операций с фоновым растровым изображением (например, XOR ), не позволяя клиентам реализовать какой-либо вид расширенной фильтрации изображений.

Свойства _XROOTPMAP_ID и ESETROOT_PMAP_ID [ править ]

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

XCopyArea [ править ]

XCopyArea может достичь более реалистичного эффекта прозрачности, поскольку может включать в себя затемненные окна, но со значительным недостатком, заключающимся в том, что его можно использовать только с модальными окнами . Этот метод просто использует XCopyArea()функцию, чтобы сделать частичный снимок экрана для использования в качестве фонового изображения окна.

Будущее [ править ]

Последние технологии, такие как DirectFB , инфраструктура прямого рендеринга и аппаратная композиция через OpenGL, позволяют клиентским приложениям X использовать истинную альфа-прозрачность .

Ссылки [ править ]

  1. ^ «Учебник: Urxvt: прозрачность» . CTKArch . 2014 . Проверено 23 февраля 2016 года . CS1 maint: обескураженный параметр ( ссылка )