본문 바로가기
컴퓨터 관련

GTK [3] application icon 출력.

by _BlankSpace 2017. 4. 9.

대부분의 window manager는 titlebar의 왼쪽 모서리나 taskbar에 아이콘을 출력합니다.


이번에는 간단한 예제로 아이콘을 출력하는 방법을 소개할까 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <gtk/gtk.h>
GdkPixbuf *create_pixbuf(const gchar* filename)
{
    GdkPixbuf* pixbuf;
    GError* error = NULL;
    pixbuf = gdk_pixbuf_new_from_file(filename, &error);
    if (!pixbuf) {
    fprintf(stderr, "%s\n", error->message);
    g_error_free(error);
    }
    return pixbuf;
}
int main(int argc, char* argv[])
{
    GtkWidget* window;
    GdkPixbuf* icon;
    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Icon");
    gtk_window_set_default_size(GTK_WINDOW(window), 230150);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    icon = create_pixbuf("web.png");
    gtk_window_set_icon(GTK_WINDOW(window), icon);
    gtk_widget_show(window);
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),
    NULL);
    g_object_unref(icon);
    gtk_main();
    return ;
}
cs


코드설명


pixbuf = gdk_pixbuf_new_from_file(filename, &error);

gdk_pixbuf_new_from_file() 함수는 파일에서 이미지를 로딩하여, 새로운 pixbuf를 생성합니다.

파일 포맷은 자동으로 정해집니다. 만약, NULL이 반환된다면 error가 set됩니다.



if (!pixbuf) {

fprintf(stderr, "%s\n", error->message);

g_error_free(error);

}

icon이 로드되지 않았다면 error 메시지가 출력됩니다.



icon = create_pixbuf("web.png");

gtk_window_set_icon(GTK_WINDOW(window), icon);

gtk_window_set_icon()은 window에 icon을 출력합니다.

create_pixbuf()는 PNG file로 GdkPixbuf를 생성합니다.



g_object_unref(icon);

g_object_unref()은 pixbuf 오브젝트의 reference count를 감소시킵니다. reference count가 0으로 떨어지면 객체가 finalize됩니다. (메모리가 free됩니다.)

'컴퓨터 관련' 카테고리의 다른 글

GTK [5] Mnemonic.  (0) 2017.04.10
GTK [4] Tooltip.  (0) 2017.04.10
GTK [2] 가운데에 창 띄우기.  (0) 2017.04.09
GTK [1] 창 띄우기.  (0) 2017.04.09
GTK Makefile 작성법.  (0) 2017.04.09

댓글