27五/090
在自己的 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 支持吧!
转载请注明:转自K.I.S.S. - 简单哲学 - 在自己的 GTK+ 程序中加入 RGBA 透明支持
你可能对这些感兴趣:
