대부분의 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), 230, 150); 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 |
댓글