2009-06-10 6 views
0

Я работаю над демонстрационным приложением для библиотеки, которую я и два коллеги пишут, чтобы приложения GNOME запускали аудио-события, хотя libCanberra позволял пользователям выбирать визуальные события для их замены. Это стремление, ориентированное на доступность, чтобы помочь как зрителям, так и людям с ослабленным зрением получить преимущества аудио-оповещений и т. Д.Рисование непосредственно на экране через GTK или GDK

Для нашего первого демонстрационного примера мы просто пытаемся сделать всю вспышку экрана цветом, когда кнопка нажата в нашем простом примере приложения GTK. Я смотрел документацию GTK, и все рисунки, которые я видел, были связаны с рисованием непосредственно окна или другого виджета. Я хочу контролировать весь оттенок экрана. Это будет вещь GDK? Я полностью от основания?

Любые ссылки/помощь будут высоко оценены! Благодарю.

PS: Это написано на C, хотя функции должны быть одинаковыми между языками с соответствующими привязками, я полагаю.

ответ

2

Вы не можете. Приложение имеет доступ только к собственному окну и не знает (и не должно) ничего знать о других окнах или экране. «Экран» управляется тем, что использует GTK (X? Win32? DirectFB?).

При этом вы можете попытаться создать «полноэкранное» окно, которое охватывает всю площадь экрана. Таким образом, полноэкранные приложения реализованы в большинстве оконных систем.

+0

Будьте осторожны с этим, как если бы вы нарисовали полноэкранное окно, которое просто показывает, что находится под ним, вы можете столкнуться с проблемами с менеджером компоновки, таким как Compiz. – MighMoS

+0

@MighMoS и stormsoul, можете ли вы, пожалуйста, продумать, я и Ной застряли в ситуации, когда нам нужно сделать одно окно для всех мониторов: http://stackoverflow.com/questions/31366706/gtk-window-cover-entire- screen – yatg

0

GTK не имеет такой опции AFAIK, вы, вероятно, захотите использовать бэкэнд: Xlib (или Xcb) для этого.

+0

Спасибо за ответы. Не имея времени специально изучить Xlib для этой части, мы получили эту итерацию проекта, создав полностью прозрачное окно через GDK. К сожалению, для этого требуется, чтобы пользователи включали композицию, но мы сделали эквивалентные решения для тех, кто этого не делает. Тем не менее, это работает. – RyanG