如何在缩放时在 GTK DrawingArea 中显示 SVG 图像而不损失质量?

问题描述 投票:0回答:0

我想在 GTK DrawingArea 中显示 SVG 图像而不会在缩放时降低质量。目前,我正在使用以下代码:

fn build_ui(application: &gtk::Application) {
    let window = gtk::ApplicationWindow::new(application);
    window.set_default_size(WIDTH, HEIGHT);
    let drawing_area = DrawingArea::new();
    window.add(&drawing_area);

    let file_data = include_str!("../file.svg").as_bytes();
    let loader = PixbufLoader::new();
    loader.write(file_data);
    loader.close();
    let pixbuf = loader.pixbuf().unwrap();
    let pixbuf = pixbuf.scale_simple(100, 100, InterpType::Hyper).unwrap();

    drawing_area.connect_draw(move |_, cr| {
        cr.set_source_pixbuf(&pixbuf, 0.0, 0.0);
        cr.paint();

        Inhibit(false)
    });

    window.show_all();
}

原图尺寸为50x50像素,我将其缩放为100x100像素,导致像素化。这是因为 Pixbuf 适用于光栅图像。我怎样才能在不损失任何缩放比例的情况下使用矢量输出?

user-interface svg rust gtk drawingarea
© www.soinside.com 2019 - 2024. All rights reserved.