2012-09-20 1 views
3

저는 GtkToolBar에 3 개의 GtkToolButtons가 있는데 이것들 각각에 주식 아이콘 값이 있으므로 모두 동일한 크기로 나타납니다. 이제 임의의 크기로 된 커스텀 이미지 (.png)를 가진 4 번째 GtkToolButton을 추가했습니다.이 버튼은 이미지가 더 높은 resoultion 이었기 때문에 거대한 것처럼 보입니다. 이 GtkToolButton을 다른 3 개의 버튼과 일치하도록 확장하려면 어떻게해야합니까?GtkToolButton 사용자 정의 아이콘을 가지고 있지만 주식 아이콘 크기가

는 여기에 대한 브리핑 무엇을 수행하는 코드이다 :

GtkWidget *custom_icon = gtk_image_new_from_file(path); 
GtkToolItem *toolbar_item = gtk_toggle_tool_button_new(); 
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolbar_item), custom_icon); 
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolbar_item), "Custom Item"); 
gtk_toolbar_insert(toolbar, toolbar_item, -1); 

답변

5

다른 해결책이 있습니다. 당신이 다른 크기의 이미지가있는 경우

GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(icon_file_path, NULL); 
int width, height; 
gdk_pixbuf_get_file_info (icon_file_path, &width, &height); 
gtk_icon_theme_add_builtin_icon ("custom_icon", width, pixbuf); 
g_object_unref (G_OBJECT (pixbuf)); 

GtkToolItem *toolbar_item = gtk_toggle_tool_button_new(); 
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON(toolbar_item), "custom_icon"); 

, 당신은 그들 모두를 추가하고은 Gtk가 올바른 크기 중 하나를 선택할 수 있습니다 (또는 발견되지 않는 경우는 크기 조정) 할 수 있습니다 : 그냥 이미지의 각각에 대해 처음 다섯 줄을 반복 파일.

다른 곳에서도 아이콘을 사용할 수 있으며 크기도 자동으로 조정됩니다. 예를 들어 기본 창에 사용하려면 다음을 입력하십시오.

gtk_window_set_icon_name(GTK_WINDOW(main_window), "custom_icon"); 
2

이 그것을 찾을 자신! 그것이 나를 좋아하는 누군가를 돕기위한 트릭입니다. enum (GTK_ICON_SIZE_BUTTON, GTK_ICON_SIZE_LARGE_TOOLBAR 등과 같은 표준 값) 인 주식 메뉴 항목에서 아이콘 크기를 쿼리하십시오. 이제 gtk_icon_size_lookup을 사용하여 픽셀 크기를 얻으십시오. 올바른 크기로 사용자 정의 아이콘/이미지 파일에서 pixbuf를 만듭니다. GtkImage를 만들어서 새 메뉴 항목으로 설정하면 끝났습니다!

GtkToolItem *stock_menu_item = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_NEW); 
GtkIconSize toolbar_icon_size = gtk_tool_item_get_icon_size(stock_menu_item); 
gint width = 0, height = 0; 
gtk_icon_size_lookup(toolbar_icon_size, &width, &height); 
GdkPixbuf *app_icon = gdk_pixbuf_new_from_file_at_size(icon_file_path, width, height, NULL); 
GtkImage *tray_icon = gtk_image_new_from_pixbuf(app_icon); 
g_object_unref(app_icon); 
app_icon = NULL; 
GtkToolItem *toolbar_item = gtk_toggle_tool_button_new(); 
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toolbar_item), tray_icon); 
관련 문제