抱歉,我之前的回答有误。在 GTK+ 中,没有 gtk_image_set_pixel_size
函数来直接调整图像大小。如果你想要调整 GtkImage
控件中显示的图像大小,你可以使用 CSS 样式或者通过更改图像缩放属性来实现。
以下是两种方式的示例代码:
- 使用 CSS 样式来调整图像大小:
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *image = gtk_image_new_from_resource("/path/to/resource.png");
// 设置 CSS 样式
const gchar *css = "image {"
" width: 200px;"
" height: 150px;"
"}";
GtkCssProvider *provider = gtk_css_provider_new();
gtk_css_provider_load_from_data(provider, css, -1);
GtkStyleContext *context = gtk_widget_get_style_context(image);
gtk_style_context_add_provider(context,
GTK_STYLE_PROVIDER(provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
gtk_container_add(GTK_CONTAINER(window), image);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
上述代码中,我们通过设置 CSS 样式来将图像的宽度设为 200 像素,高度设为 150 像素。这里需要引入 gtk_css_provider_load_from_data
和 gtk_style_context_add_provider
函数,并且创建了一个 GtkCssProvider
对象。
- 更改图像缩放属性来调整图像大小:
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *image = gtk_image_new_from_resource("/path/to/resource.png");
// 获取图像对象
GdkPixbuf *pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(image));
// 调整图像大小
gint new_width = 200;
gint new_height = 150;
GdkPixbuf *scaled_pixbuf = gdk_pixbuf_scale_simple(pixbuf, new_width, new_height, GDK_INTERP_BILINEAR);
// 更新图像
gtk_image_set_from_pixbuf(GTK_IMAGE(image), scaled_pixbuf);
g_object_unref(scaled_pixbuf); // 释放缩放后的 pixbuf
gtk_container_add(GTK_CONTAINER(window), image);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
在上述代码中,我们通过 gtk_image_get_pixbuf
函数获取到图像对象 GdkPixbuf
,然后使用 gdk_pixbuf_scale_simple
函数将其缩放到指定的新宽度和新高度。最后,我们通过 gtk_image_set_from_pixbuf
更新了控件中显示的图像。
请注意替换 /path/to/resource.png
为实际的资源路径,并根据需要调整目标宽度和高度。记得正确链接 GTK+ 库并配置好编译环境。
内容由零声教学AI助手提供,问题来源于学员提问