FLTK生 rust :随框架调整图像大小

3mpgtkmj  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(190)

我正在尝试编写一个加载图像的程序,当用户调整窗口大小时,图像也会调整大小,就好像它有“height:100%”,在Rust语言中使用FLTK。
这是我写的:

use fltk::{frame::Frame, window, app, prelude::*, image::JpegImage};

fn main() {
    let app = app::App::default().with_scheme(app::Scheme::Gtk);

    let mut main_win = window::Window::default()
        .with_size(800, 600)
        .center_screen()
        .with_label("PhotoTest");

    let mut img_frame = Frame::default().size_of_parent();
    let img = JpegImage::load("flower.jpg").unwrap();
    img_frame.set_image(Some(img));
    
    img_frame.resize_callback(|s,_,_,_,_| {
        s.image().unwrap().scale(s.w(), s.h(), true, true);
        s.redraw();
    });

    main_win.make_resizable(true);
    main_win.end();
    main_win.show();
    app.run().unwrap();
}

然而,图像并没有改变。这也适用于其他操作,比如inactive(),就好像图像根本没有改变。事实上,当使用println!("Frame - {}, Image - {}", s.w(), s.image().unwrap().w()) inside the callback, the时,img_frame '得到一个新的大小,而图像的大小保持不变,这表明回调正在得到它的调用,只是不能应用它。
这些操作在图像被移到框架中之前都很好用,这时它们就被忽略了。我是不是做了什么很愚蠢的事情?请帮帮忙。

wkyowqbh

wkyowqbh1#

在添加图像之前先定义回调函数如何?

相关问题