4

私はGtkToolBarを持っていて、3つのGtkToolButtonがあり、それぞれにストックアイコンの値があるため、すべて同じサイズで表示されます。ここで、カスタム画像(.png)を使用して4番目のGtkToolButtonを追加しました。これは任意のサイズであり、このボタンだけが巨大に見えました(画像の解像度が高いため)。このGtkToolButtonを他の3つのボタンと一致するようにスケーリングするにはどうすればよいですか?

これが私がブリーフィングしたことを行うコードです:

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);
4

2 に答える 2

2

自分で見つけた!これが私のような人に役立つトリックです。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);
于 2012-09-21T20:36:06.970 に答える