如何设置不规则窗口GTK
来源:互联网 发布:苹果app软件开发 编辑:程序博客网 时间:2024/05/23 00:47
为了体现高度的可制定性.
对于GTK来说,肯定可以实现不规则的窗口.
但是如何实现呢?
在网上找到了一些资料.主要是用透明的图片来实现的.
下面我们来分析一下实现的过程.
pixbuf = gdk_pixbuf_new_from_file("./1.png",NULL);
gdk_pixbuf_render_pixmap_and_mask(pixbuf,&pixmap,&bitmap,128);
image = gtk_image_new_from_pixbuf(pixbuf);
gtk_container_add(GTK_CONTAINER(window),image);
pixmap = gdk_pixmap_new(image->window,gdk_pixbuf_get_width(pixbuf),gdk_pixbuf_get_height(pixbuf),-1);
gdk_pixbuf_render_to_drawable(pixbuf,pixmap,image->style-fg_gc[GTK_STATE_NORMAL],0,0,0,0,gdk_pixbuf_get_width(pixbuf),gdk_pixbuf_get_height(pixbuf),GDK_RGB_DITHER_NORMAL,0,0);
g_object_unref(pixbuf);
上面这些语句基本完成了对透明图像处理,形成不规则窗口的过程。
下面我们逐步分析。
pixbuf = gdk_pixbuf_new_from_file("./1.png",NULL);
创建一个新的pixbuf通过从文件中读取图像。第二个参数是出错处理的,可以不管。第一个参数是图像文件的名字。一般来讲我们把这个文件做成想要的形状,不需要的地方设置成透明的,一般用PS或者GIMP来处理。
gdk_pixbuf_render_pixmap_and_mask(pixbuf,&pixmap,&bitmap,128);
创建一个pixmap和bitmap,通过第二第三个参数返回。并且设置与pixbuf相同的透明度。这个函数只是一个转换函数。
image = gtk_image_new_from_pixbuf(pixbuf);
通过pixbuf创建一个image。
gtk_container_add(GTK_CONTAINER(window),image);
要显示image。
pixmap = gdk_pixmap_new(image->window,gdk_pixbuf_get_width(pixbuf),gdk_pixbuf_get_height(pixbuf),-1);
创建一个pixmap用给出的大小和深度。
gdk_pixbuf_render_to_drawable(pixbuf,pixmap,image->style-fg_gc[GTK_STATE_NORMAL],0,0,0,0,gdk_pixbuf_get_width(pixbuf),gdk_pixbuf_get_height(pixbuf),GDK_RGB_DITHER_NORMAL,0,0);
这个函数应该用gdk_draw_pixbuf代替。
让pibuf变得可绘图。
g_object_unref(pixbuf);
减少一个pixbuf的引用计数。
gdk_window_set_back_pixmap(image->window,pixmap,FALSE);
设置窗口的背景图片。
- 如何设置不规则窗口GTK
- 如何创建不规则窗口
- GTK+-2.0中不规则窗口的制作(上)
- GTK+-2.0中不规则窗口的制作(下)
- gtk为窗口设置背景图片
- 如何创建一个不规则形状的窗口
- Gtk显示不规则按钮
- 不规则窗口
- 不规则窗口
- GTK+ 2 给窗口设置背景图片
- GTK 设置窗口在屏幕中的位置
- MFC编程(设置字体/不规则窗口/按位图生成不规则窗口)
- WPF不规则窗口和Settings.setting设置示例
- 如何创建一个不规则形状的窗口收藏
- 自定义不规则窗口如何响应左双击事件
- 在QT中如何实现一个不规则形状的窗口
- GTK进阶学习:设置窗口背景图(可指定其大小)
- GTK进阶学习:设置窗口背景图(可指定其大小)
- PHP中fgetcsv中文乱码的问题
- 随感
- HTML5学习资料整理
- How To Make a Tile Based Game with Cocos2D
- 微软一站式示例代码库 [中文版] 2011年3月更新
- 如何设置不规则窗口GTK
- ext表格数据显示
- MPEG4码流简单分析
- CString_Format
- ubuntu安装cacti
- 开发人员应该知道的一些东西
- Collisions and Collectables: How To Make a Tile Based Game with Cocos2D Part 2
- ORA-12519和ORA-12514问题解决记录
- 如何通过offset地址确定引起崩溃的代码行