GTK RGB图像绘制

⌚Time: 2022-08-01 19:26:19

👨‍💻Author: Jack Ge

源代码


#include <gtk/gtk.h>



#define WIDTH 300

#define HEIGHT 300



GtkWidget *window;

GdkPixbuf *pixbuf;

GtkWidget *image;



int main() {



    gtk_init(NULL, NULL);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_default_size(GTK_WINDOW(window), WIDTH, HEIGHT);

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



    guchar rgbbuf[WIDTH *HEIGHT * 3];

    guchar *pos;

    pos = rgbbuf;

    for (int y = 0; y < HEIGHT; y++)

    {

        for (int x = 0; x < WIDTH; x++)

        {

            *pos++ = x<WIDTH/2?100:200;         /* Red. */

            *pos++ = y<HEIGHT/2?200:150;        /* Green. */

            *pos++ = 207;                       /* Blue. */

        }

    }



    pixbuf = gdk_pixbuf_new_from_data(rgbbuf, GDK_COLORSPACE_RGB, FALSE, 8, WIDTH, HEIGHT, WIDTH*3, NULL, NULL);

    image = gtk_image_new_from_pixbuf(pixbuf);

    gtk_container_add(GTK_CONTAINER(window),image);

    gtk_widget_show_all(window);

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

    gtk_main();

}

编译


g++ t.c `pkg-config --cflags --libs gtk+-2.0`

运行