代码之家  ›  专栏  ›  技术社区  ›  TheMan68

qml项目抓取图像保存图像错误

  •  0
  • TheMan68  · 技术社区  · 8 年前

    我用的是

    Item.grabToImage()
    

    但我有以下错误。

    QML ItemX: grabToImage: item has invalid dimensions
    

    这是因为我使用的高度和宽度属性如下:

    width: {
        // return with * 0.4; based for some condition
        // for eg
        return parent.width * 0.4;
    }
    
    // and something similar with height
    

    只有当我放入一个静态高度和宽度时,我才能使下面的代码正常工作:

    grabToImage(
        function(result)
        {
            result.saveToFile("/path/project-name/tmp/something.png");
        }
    );
    

    你知道我为什么和怎么解决这个问题吗?

    谢谢你

    1 回复  |  直到 8 年前
        1
  •  0
  •   TheMan68    8 年前

    我不是百分之百确定原因,但这是关于动态宽度的家长。

    在我编写的程序中,我已经将图像的锚定设置在预览容器的左侧和右侧。

    所以,当我试图从另一个项目的图像捕获,是叠加图像,以削减图像的小部分,它不让我。 我修复的方法是设置源图像的固定图像大小,然后将其锚定到预览部分的中心。

    唯一的问题是,如果你按比例缩放窗口,它不会变大。 我确信我可以实现并根据大小更改主程序窗口,然后设置图像的宽度(未测试)。

    最后我要提到的是,如果图像很小,那么从源图像的部分中剪切出来的图像会很模糊,质量也不好。 我将“sourcesize.width”设置为一个非常大的图像,然后使用“scale”属性缩小图像以适应预览项,从而解决了这个问题。

    推荐文章