GTK:背景图

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


代码:

#include <gtk/gtk.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>


#define WIDTH 200*2
#define HIGHT 141*2

void back(GtkWidget *widget)
{
	gtk_widget_set_app_paintable(widget, TRUE);
	gtk_widget_realize(widget);
	
	gtk_widget_queue_draw(widget);
	GdkPixbuf *src = gdk_pixbuf_new_from_file("demo.png", NULL);

	GdkPixbuf *dst = gdk_pixbuf_scale_simple(src, WIDTH, HIGHT, GDK_INTERP_BILINEAR);

	GdkPixmap *map =NULL;

	gdk_pixbuf_render_pixmap_and_mask(dst, &map, NULL, 128);

	gdk_window_set_back_pixmap(widget->window, map, FALSE);

	g_object_unref(src);
	g_object_unref(dst);
	g_object_unref(map);
}


int main(int argc, char **argv)
{
	gtk_init(&argc, &argv);
	GtkWidget *windows = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(windows), "例程");	
	gtk_widget_set_size_request(windows, 200*2, 141*2);	
	gtk_window_set_resizable(GTK_WINDOW(windows), TRUE);
	gtk_window_set_position(GTK_WINDOW(windows), GTK_WIN_POS_CENTER);//居中
	g_signal_connect(windows, "destroy", G_CALLBACK(gtk_main_quit), NULL);

	back(windows);
	
	gtk_widget_show_all(windows);
	gtk_main();

	return 0;
}

运行截图:
在这里插入图片描述
放大是这样:
在这里插入图片描述

所以最好设置窗口不可伸缩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值