目前,我可以通过按钮点击等刷新/重新加载来更改图像窗口中的图像
然而,我无法弄清楚如何使用Ruby-Gtk进行拖动选择,甚至无法确定
基本上,我想制作像this这样的东西,你可以放大和缩小图像,然后使用鼠标指针拖动和滚动查看图像。
我该怎么做呢?
任何有用函数和示例的提示都非常受欢迎。
答案 0 :(得分:1)
我尝试写一个样本。(而不是拖动)
require 'gtk3'
path = ARGV[0]
win = Gtk::Window.new('MyApp')
win.signal_connect('destroy') { Gtk.main_quit }
box = Gtk::Box.new(:vertical)
scr = Gtk::HScale.new(0.1, 5.0, 0.1)
scr.value = 1.0
swi = Gtk::ScrolledWindow.new
swi.set_size_request(300, 300)
img = Gtk::Image.new
pxb = Gdk::Pixbuf.new(file: path)
img.pixbuf = pxb
v_old = scr.value
scr.signal_connect('value-changed') do
v = scr.value
pxb_resized = pxb.scale(pxb.width * v, pxb.height * v, :hyper)
img.pixbuf = pxb_resized
# To keep center of image when you zoom up
w = swi.allocation.width
swi.vadjustment = swi.vadjustment.set_value(
(swi.vadjustment.value + w / 2.0) * (v / v_old) - w / 2.0
)
h = swi.allocation.height
swi.hadjustment = swi.hadjustment.set_value(
(swi.hadjustment.value + h / 2.0) * (v / v_old) - h / 2.0
)
v_old = v
end
# packing
win.add box
box.pack_start scr
box.pack_start swi, expand: true, fill: true
swi.add img
win.show_all
Gtk.main
但是在Mac上pixbuf有些麻烦。 https://github.com/ruby-gnome2/ruby-gnome2/issues/1079
答案 1 :(得分:0)
目前,我能够使用带有Ruby的RMagick进行图像缩放,并通过按钮点击等刷新/重新加载来更改图像窗口中的图像。
您能否提供一个代码段,展示您如何创建图像窗口小部件和图像窗口?