Gtk透明窗体和控件的研究
来源:互联网 发布:淘宝网都市丽人 编辑:程序博客网 时间:2024/04/30 06:27
网上这些类似的资料很多,我大致上都是用过,我个人总结如下: #include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *window = NULL; GdkPixbuf *pixbuf = NULL; GdkBitmap *bitmap = NULL; GdkPixmap *pixmap = NULL; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_decorated(GTK_WINDOW(window), FALSE); // 设置无边框 gtk_widget_set_app_paintable(window, TRUE); gtk_widget_realize(window); pixbuf = gdk_pixbuf_new_from_file("demo1.png", NULL); // gdk函数读取png文件 gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, &bitmap, 128); // alpha小于128认为透明 gtk_widget_shape_combine_mask(window, bitmap, 0, 0); // 设置透明蒙板 gdk_window_set_back_pixmap(window->window, pixmap, FALSE); // 设置窗口背景 g_object_unref(pixbuf); g_object_unref(bitmap); g_object_unref(pixmap); gtk_widget_show_all(window); gtk_main(); return TRUE; }
透明的一般实现方法
1:使用异形窗体实现透明
在这里我引用了别人的一个sample,其原理就是在设置不规则窗体,然后设置控件的背景图实现透明,适合用于设置简单控件上面的图,使控件变为透明
这样可以设置整个窗体的透明度,但是缺点就是窗体上说有子元素也会跟着透明,也就是说窗体上的问题,图片,都会跟着一起透明。
其原理就是使用GDK相关库的基础实现
gdk_property_change (GTK_WIDGET (panel)->window,
gdk_atom_intern ("_NET_WM_WINDOW_OPACITY", FALSE),
gdk_atom_intern ("CARDINAL", FALSE), 32,
GDK_PROP_MODE_REPLACE,
(guchar *) & opacity,
1L);
使用方法就不说了,及其简单
这2个方法就是最基本的开发模式,但是根据需求,各开发者也要做很多余外的工作吧~
- Gtk透明窗体和控件的研究
- WS_CLIPCHILDREN风格窗体控件透明的解决方案
- .net窗体透明,控件不透明的方法
- 窗体透明、窗体上控件和DC绘图不透明
- 窗体透明、窗体上控件和DC绘图不透明
- 窗体透明、窗体上控件和DC绘图不透明
- 窗体透明、窗体上控件和DC绘图不透明
- 窗体透明、窗体上控件和DC绘图不透明
- 透明窗体-slider控件
- 窗体透明,窗体上控件不透明的设置方法
- swing 窗体透明和窗体透明窗体里的空间不透明
- c# 自定义控件透明,自定义透明窗体
- 让窗体透明 控件可见
- 【VB】窗体透明一:窗体透明,控件不透明(穿过)
- 【VB】窗体透明三:窗体、控件变透明
- 透明窗体的实现
- 透明的WinForm窗体
- 透明窗体的实现
- 通过百度的产品动向看互联网趋势
- Java第十二次课--JDBC
- http 协议
- 用策略模式实现一个冒险游戏
- 一个可自动备份及清理系统日志的Shell脚本
- Gtk透明窗体和控件的研究
- 获得局域网中计算机的列表(包括计算机名,IP和MAC)的方法
- 使用ASH监控历史会话,找出坏SQL
- 忘不了
- Android源码编译及模拟器运行
- javascript 获取滚动条高度+常用js页面宽度与高度
- Andriod 如何添加自定义C++库
- 全排列
- oracle 用法记录1