在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