在自己的 GTK+ 程序中加入 RGBA 透明支持
上次介绍了怎么在 Arch Linux 下启用 RGBA 透明窗口 ,然而,目前支持 RGBA 的程序还很少,看起来有的透明,有的不透明,很不爽吧?
另外,GTK+ 默认是不启用 RGBA 支持的,我们自己编写程序的时候,怎么加入 RGBA,达到这种酷炫的效果呢?
细心的同学可能已经发现,上次我发的图中最顶端那个程序就是我自己写的,而且已经实现了半透明效果。
加入 RGBA 效果的方法并不难,仅仅是几条语句而已,看看下面的 patch:
From fb88cb790a08e928c5e6656f8334264c5ae9f93a Mon Sep 17 00:00:00 2001 From: Kevin Lange Date: Wed, 5 Mar 2008 09:26:53 -0500 Subject: [PATCH] Added RGBA colormap support to the GUI --- ccm/Window.py | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/ccm/Window.py b/ccm/Window.py index 09306da..84f1d76 100644 --- a/ccm/Window.py +++ b/ccm/Window.py @@ -42,6 +42,10 @@ class MainWin(gtk.Window): def __init__(self, Context, pluginPage=None, categoryName=None): gtk.Window.__init__(self) + self.gtk_screen = self.get_screen() + colormap = self.gtk_screen.get_rgba_colormap() + if colormap: + gtk.widget_set_default_colormap(colormap) self.ShowingPlugin = None self.Context = Context self.connect("destroy", self.Quit) @@ -99,6 +103,7 @@ class MainWin(gtk.Window): self.ToggleCategory(None, categoryName) def Quit(self, *args): + gtk.widget_pop_colormap() gtk.main_quit() def ResetMainWidgets(self): -- 1.5.2.5
呵呵,这是 CCSM 的 RGBA 补丁,看到了吧,其实关键的也就那么几行而已,在初始化的时候试着载入 RGBA 颜色表,在退出的时候对颜色表进行出栈,其他语言也是这个道理。
有了这几行代码,是不是想把桌面上的所有 GTK+ 程序 hack 掉?
呵呵,赶快在自己的程序里加入 RGBA 支持吧!
在 Arch Linux 下启用 RGBA 透明窗口
看了 Ubuntu 9.04 那么炫,突然感觉自己的 Arch 好像缺了什么,哎?窗口怎么不是透明的啊……
这个东西是由 RGBA 控制的,大家知道 RGB 是通常所说的三原色:红绿蓝,那么 A 是什么呢?不错,就是 Alpha,透明。
Arch 里面默认没有启用透明的引擎,所以窗口都是 RGB 的,看起来当然不如 Ubuntu 那么炫啦~
那么怎么在 Arch 里面启用透明呢?
先来看一下效果图:
其实启用方法很简单,只要从 AUR 里安装 librgba-gtk-module 这个包就可以了:
yaourt -S librgba-gtk-module
然后按照提示,运行:
gnome-color-chooser
在弹出的窗口里选择“引擎”-“全局”-“Murrine”-“首选项”,勾上 Enable/Disable RGBA support 的两个勾就行了。
应用的时候,可能会等待一会儿,之后就可以看到透明窗口和控件啦!
值得一提的是,并非所有窗口都支持透明效果,这要看软件的源代码启没启用支持哦~
以上方法在 Arch Linux、Gnome 2.26.2 下验证通过。


