gtk中构件添加背景图

在gtk中我们总想要去给构件添加背景图,具体函数代码如下

void chang_background(GtkWidget *widget, int w, int h, const gcha    r *path)
 12 {                       
 13     gtk_widget_set_app_paintable(widget, TRUE);     //允许窗口可>    以绘图
 14     gtk_widget_realize(widget);
 15                         
 16     /* 更改背景图时,图片会重叠
 17      * 这时要手动调用下面的函数,让窗口绘图区域失效,产生窗口重绘
    制事件(即 expose 事件)。
 18      */                 
 19     gtk_widget_queue_draw(widget);
 20                         
 21     GdkPixbuf *src_pixbuf = gdk_pixbuf_new_from_file(path, NULL);       // 创建图片资源对象
 22     // w, h是指定图片的宽度和高度
 23     GdkPixbuf *dst_pixbuf = gdk_pixbuf_scale_simple(src_pixbuf, w    , h, GDK_INTERP_BILINEAR);
 24                         
 25     GdkPixmap *pixmap = NULL;
 26                         
 27     /* 创建pixmap图像;  
 28      * NULL:不需要蒙版;
 29      * 123: 0~255,透明到不透明
 30      */                 
 31     gdk_pixbuf_render_pixmap_and_mask(dst_pixbuf, &pixmap, NULL,     128);
 32     // 通过pixmap给widget设置一张背景图,最后一个参数必须为: FASL    E
 33     gdk_window_set_back_pixmap(widget->window, pixmap, FALSE);
 34                         
 35     // 释放资源         
 36     g_object_unref(src_pixbuf);
 37     g_object_unref(dst_pixbuf);
 38     g_object_unref(pixmap);
 39 }                       

在主函数中调用该函数就行,也可以自己写一个头文件

原文链接: https://blog.csdn.net/tennysonsky/article/details/43154601

笨鸟先飞
原文地址:https://www.cnblogs.com/zoutingrong/p/12550498.html