c++ - 当小部件太大时的 Gtk 3

标签 c++ gtk gtk3 opencv3.0

我是 gtk 3.0 + 的新手,我想知道当图像尺寸太大时人们如何处理这种情况。

  1. 是否可以使用固定大小的框架来显示图像(据我所知,容器大小似乎会根据其包含的小部件大小而变化,gtk_overlay 似乎是可能的,但我不确定如果还有其他方法可以做到这一点

  2. 如果第 1 步可行,当图像变得太大时,在固定大小的区域下,当我们在图像周围移动时,我们可以看到图像的不同部分(其他部分超出区域不显示

最佳答案

当你知道怎么做时,这很容易。在 C 中:

GdkPixbuf *pixbuf;
GtkWidget *preview_image;

preview_image = gtk_image_new ();
pixbuf = gdk_pixbuf_new_from_file_at_scale (file_uri, 
                                            128, 
                                            128, 
                                            TRUE, NULL);
gtk_image_set_from_pixbuf (GTK_IMAGE(preview_image), pixbuf);

pixbuf docs和图像 docs

基本上,您不能直接从文件中将图像放入任何类型的滚动“窗口”中。相反,将文件加载到 pixbuf 中,然后将 pixbuf 加载到图像中,所有的大小都会自动调整。

关于c++ - 当小部件太大时的 Gtk 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49658732/

相关文章:

c++ - gtk_widget_add_tick_callback() 和 gtk_main_iteration()

c - 如何捕获 GTK 窗口并将其写入 PNG 文件?

gtk3 - 如何读出 gtk3 对象的 "glade ID"

c++ - 根据值查找特定参数

导致 Gtk 在断言时中止

python - 从 Python 中的 Vte(GTK 终端小部件)获取当前工作目录

c - 使创建的菜单的菜单项可使用 GTK+ 运行

c++ - 关于 Hinnant 的栈分配器的问题

c++ - 如何检测多显示器系统上的最大化事件

c++ - h264实时视频流