参考链接:
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;
}
运行截图:
放大是这样:
所以最好设置窗口不可伸缩。