Я разрабатываю многоплатформенную программу, использующую Моно, и она требует поддержки Непрозрачности Формы. В основном способность сделать окно полупрозрачным. Это хорошо работает в окнах путем установки Окна. Форма. Свойство Opacity для высказывания 0.5. В Ubuntu 14.04 однако это не работает out-of-the-box. Я думаю, что выполняю Unity и Compiz, независимо от того, что шло с установкой Ubuntu по умолчанию.
Согласно Моно FAQ, это должно поддерживаться:
Как я могу сделать свою альфу окон смешанной? (прозрачный)
Прозрачность поддержки внедрения Mono Winform на ее окнах пока базовая система управления окнами имеет поддержку его.
Для пользователей Unix/X11 это означает, что им нужно было включить СОСТАВНОЕ расширение на их сервере, и они должны выполнять составляющего композит менеджера, как xcompmgr.
GenToo Linux Wiki имеет хорошее описание о том, как установить сервер Xorg для поддержки прозрачности.
http://www.mono-project.com/docs/faq/winforms/
Ссылка, на которую они указывают, является битой.
Я плохо знаком с Linux и не совсем уверен, что понимаю все части, вовлеченные в подъем составляющего композит менеджера окон и выполнение. Кроме того, у меня уже нет одного (compiz?)
Что я должен попытаться заставить свою непрозрачность Winform работать?
Править: Моя тестовая программа является в основном формой с полосой прокрутки (идет от 0 до 100), который имеет обработчик событий на изменении для установки непрозрачности формы на основе значения полосы прокрутки. Это - суть его:
private void trackBar1_Scroll(object sender, EventArgs e)
{
double opacity = ((double)trackBar1.Value) / 100;
this.Opacity = opacity;
}
Работает отлично в Windows.
У Вас действительно есть все, в чем Вы нуждаетесь с compiz
.
Установка Window.Form.Opacity
должна установить свойство _NET_WM_WINDOW_OPACITY
X-окна на окне;
Для теста, работает ли часть человечности, попытайтесь установить непрозрачность вручную на 0,5 с этой командой низкого уровня (нажмите окно):
$ xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0x7fffffff
И назад к полной непрозрачности:
$ xprop -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0xffffffff
Один путь, как установка Window.Form.Opacity
могла перестать работать, состоит в том, что она выбирает несправедливость (но тесно связанный) окно, и набор свойство там.
Согласно Вашим комментариям, идея была правильной. Добавление:
я подозреваю, что это - очень определенная ошибка, которая существует в другом программном обеспечении также: окно, которое выбрано для создания его прозрачным, найдено некоторой эвристикой на основе того, как X-окна декоратора окна и приложения имеются отношение/вкладываются и т.д., Но с введением перепорождения WM's было большое изменение в области - с удовольствием, эвристика все еще работала. Из того, что я понимаю, это - случай сбоя эвристики, так, чтобы некоторое соседнее невидимое окно было сделано прозрачным...
Взгляд на эту ошибку для понимания большего количества проблемы: транснабору не удается изменить _NET_WM_WINDOW_OPACITY свойство