LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2126|回复: 5

gtk设置窗口背景的问题

[复制链接]
发表于 2007-2-2 14:38:12 | 显示全部楼层 |阅读模式
使用函数gdk_window_set_back_pixmap之后,窗口背景还是没有改变,不知道什么问题其,pixmap参数肯定是正确的了。
发表于 2007-2-2 16:22:18 | 显示全部楼层
用以下函数设置窗口背景
#include <gdk/gdk.h>
gdk_color_parse("white",&color);
gtk_widget_modify_bg(窗口控件名, GTK_STATE_NORMAL, &color);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-2 17:07:21 | 显示全部楼层
但是我希望使用一副图片作为背景啊,使用GdkColor,好像是设置为纯色的
回复 支持 反对

使用道具 举报

发表于 2007-2-2 17:56:23 | 显示全部楼层
image = gtk_image_new_from_file("22.bmp");
gtk_container_add (GTK_CONTAINER (window), image);
回复 支持 反对

使用道具 举报

发表于 2007-2-5 16:52:15 | 显示全部楼层
参考这段代码:


  1. void
  2. update_widget_bg(GtkWidget *widget, gchar *img_file)
  3. {
  4.         GtkStyle *style;
  5.         GdkPixbuf *pixbuf;
  6.         GdkPixmap *pixmap;

  7.         gint width, height;
  8.         
  9.         pixbuf = gdk_pixbuf_new_from_file(img_file, NULL);

  10.         width = gdk_pixbuf_get_width(pixbuf);
  11.         height = gdk_pixbuf_get_height(pixbuf);

  12.         pixmap = gdk_pixmap_new(NULL, width, height, 24);
  13.         gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, NULL, 0);

  14.         style = gtk_style_copy(GTK_WIDGET (widget)->style);

  15.         if (style->bg_pixmap[GTK_STATE_NORMAL])
  16.                 g_object_unref(style->bg_pixmap[GTK_STATE_NORMAL]);

  17.         style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref(pixmap);
  18.         style->bg_pixmap[GTK_STATE_ACTIVE] = g_object_ref(pixmap);
  19.         style->bg_pixmap[GTK_STATE_PRELIGHT] = g_object_ref(pixmap);
  20.         style->bg_pixmap[GTK_STATE_SELECTED] = g_object_ref(pixmap);
  21.         style->bg_pixmap[GTK_STATE_INSENSITIVE] = g_object_ref(pixmap);

  22.         gtk_widget_set_style(GTK_WIDGET (widget), style);
  23.         g_object_unref(style);
  24. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-4-20 16:06:54 | 显示全部楼层
GTK是个好东西
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表