GTK进阶学习:设置窗口背景图(可指定其大小)

设置窗口背景图(可指定其大小):

源代码:

#include <gtk/gtk.h>

void change_background(GtkWidget *widget, int w, int h, const gchar *path)
{
        //1.允许窗口可以绘图
        gtk_widget_set_app_paintable(widget, TRUE);
        gtk_widget_realize(widget);

	/* 更改背景图时,图片会重叠 
	* 这时要手动调用下面的函数,让窗口绘图区域失效,产生窗口重绘制事件(即 expose 事件)。 
	*/ 
        gtk_widget_queue_draw(widget);
        GdkPixbuf *src = gdk_pixbuf_new_from_file(path, NULL);
        GdkPixbuf *dst = gdk_pixbuf_scale_simple(src,w,h,GDK_INTERP_BILINEAR);

	/* 创建pixmap图像;  
	* NULL:不需要蒙版;  
	* 123: 0~255,透明到不透明 
	*/
        GdkPixmap *pixmap = NULL;
        gdk_pixbuf_render_pixmap_and_mask(dst,&pixmap,NULL,128);
		
	// 通过pixmap给widget设置一张背景图,最后一个参数必须为: FASL
        gdk_window_set_back_pixmap(widget->window,pixmap,FALSE);
        

        g_object_unref(src);
        g_object_unref(dst);
        g_object_unref(pixmap);

        return;
}

int main(int argc, char *argv[])
{
        //1.gtk环境的初始化
        gtk_init(&argc, &argv);

        //2.创建一个window
        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

        //3.设置窗口标题
        gtk_window_set_title(GTK_WINDOW(window), "设置窗口背景图");
        gtk_widget_set_size_request(window, 500,450);

        //4.设置窗口图片
        change_background(window, 500, 400, "./img/1.jpg");

        //5.显示所有窗口
        gtk_widget_show_all(window);

        //6.主事件循环
        gtk_main();

        return 0;
}


运行结果:



源码下载:http://download.csdn.net/download/lianghe_work/8945211

转自:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值