免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 832 | 回复: 0
打印 上一主题 下一主题

改变控件的背景图片 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-25 15:11 |只看该作者 |倒序浏览
/**************************************************************************************************************
*函数功能:改变控件的背景图片
*filename:图片文件的路径
*widget:要改变背景的控件
*该函数不能改变所有控件的背景,只能对部分控件起作用
***************************************************************************************************************/
static void set_background_pixmap(const gchar *filename,GtkWidget *widget)
{
       GdkPixbuf *pbuf,*bg;
       GdkPixmap *pixmap;
       gint width,height;
       if(GTK_WIDGET_NO_WINDOW(widget))
       {
            g_print("the widget has not window\n");   
       }
   
       if(!GTK_WIDGET_REALIZED(widget))
       {
             gtk_widget_realize(widget);
       }
   
       if(!filename)
       {
             gdk_window_set_back_pixmap(widget->window,NULL,FALSE);
       }
  
       pbuf = gdk_pixbuf_new_from_file(filename,NULL);
       if(!pbuf)
       {
            g_print("fail\n");  
            return;
       }
       width = gdk_pixbuf_get_width(pbuf);
       height = gdk_pixbuf_get_height(pbuf);
       bg = gdk_pixbuf_new(GDK_COLORSPACE_RGB,TRUE,
               gdk_pixbuf_get_bits_per_sample(pbuf),width,height);
       gdk_pixbuf_fill(bg,0);
       gdk_pixbuf_composite(pbuf,bg,0,0,width,height,0,0,1,1,
               GDK_INTERP_BILINEAR,0xFF);
   
       pixmap = gdk_pixmap_new(widget->window,width,height,-1);
       gdk_draw_pixbuf(widget->pixmap,NULL,pbuf,0,0,0,0,-1,-1,
               GDK_RGB_DITHER_NORMAL,1,1);
  
       gdk_pixbuf_unref(pbuf);
       gdk_pixbuf_unref(bg);
      
       gdk_draw_drawable(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
               pixmap,
               0, 0,
               0, 0,
               width, height);
   
       gtk_widget_set_app_paintable(widget,TRUE);
       gdk_window_set_back_pixmap(widget->window,pixmap,FALSE);
       gtk_widget_queue_draw(widget);
}
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90973/showart_1977189.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP