gtk2.0使用绝对布局实现窗体背景图片的办法

⌚Time: 2024-06-19 19:45:27

👨‍💻Author: Jack Ge

有一个简单的办法实现窗体背景图片,就是使用绝对布局,在窗体中放一个图片控件作为背景,之后所有的控件使用绝对布局在窗体的位置。需要注意之后的控件需要在图片控件之后添加到窗体容器。否则就会被图片覆盖而不能显示。

效果:

代码示例


#include <gtk/gtk.h>



int main(int argc, char *argv[]) {

    gtk_init(&argc, &argv);

    GtkWidget *window;

    GtkWidget *fixed;

    GtkWidget *image;

    GtkWidget *button;



    // 创建窗口和固定布局

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);

    fixed = gtk_fixed_new();

    gtk_container_add(GTK_CONTAINER(window), fixed);



    // 创建图片部件

    //image = gtk_image_new_from_file("d:/bg0.jpg");

    

    // 创建缩放的图片部件

    GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file("d:/bg0.jpg", NULL);

    GdkPixbuf *scaled_pixbuf = gdk_pixbuf_scale_simple(pixbuf, 400, 300, GDK_INTERP_BILINEAR);

    image = gtk_image_new_from_pixbuf(scaled_pixbuf);

    

    // 将图片部件放置在位置 (0, 0)

    gtk_fixed_put(GTK_FIXED(fixed), image, 0, 0); 



    // 创建按钮

    button = gtk_button_new_with_label("Button 111111");

    gtk_fixed_put(GTK_FIXED(fixed), button, 10, 10); // 将文字部件放置在位置 (10, 10)



    gtk_widget_show_all(window); // 显示所有部件



    gtk_main(); // 运行主循环

    return 0;

}