GTK显示指定大小的图片

⌚Time: 2022-07-11 16:43:25

👨‍💻Author: Jack Ge

准备一张图片"p_0.jpeg"放在程序目录下

代码:


#include<gtk/gtk.h>

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



    GtkWidget* window;

    GtkWidget *frame;

    GtkWidget *image;

    GdkPixbuf *pixbuf,*dstPixbuf;

    //这个函数在所有的 GTK 程序都要调用。参数由命令行中解析出来并且送到该程序中

    gtk_init(&argc,&argv);

    //建立主窗口

    window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

    //设置窗口标题和大小

    gtk_window_set_title(GTK_WINDOW(window),"Demo");

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

    //从文件中建立pixbuf像素缓冲区

    pixbuf = gdk_pixbuf_new_from_file("p_0.jpeg",NULL);

    //调整图像大小

    dstPixbuf = gdk_pixbuf_scale_simple(pixbuf,200,150,GDK_INTERP_BILINEAR);

    //从像素缓冲区中建立图像

    image = gtk_image_new_from_pixbuf(dstPixbuf);

    //释放缓冲区

    g_object_unref(pixbuf);

    g_object_unref(dstPixbuf);

    //创建框架

    frame = gtk_frame_new("this is a picture with size 200x150");

    //将图像加入框架

    gtk_container_add(GTK_CONTAINER(frame),image);

    //将框架加入窗口

    gtk_container_add(GTK_CONTAINER(window),frame);

    //窗口退出事件添加回调函数

    g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);

    //显示窗口

    gtk_widget_show_all(window);

    //所有的 GTK 程序必须有一个 gtk_main() 函数。程序运行停在这里 等待事件 (如键盘事件或鼠标事件) 的发生。

    gtk_main();

    return 0;

}


编译


gcc GtkDemo.c `pkg-config --cflags --libs gtk+-2.0`

运行


./a.out