本文介绍了在 QML 中截取特定项目的屏幕截图的方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 QML 窗口中有一个 Video
元素.该视频显示在 Rectangle
中.
截取那个矩形
而不是整个窗口的屏幕截图的方法是什么?
解决方案
看看 Item
的 grabToImage
方法.
boolgrabToImage(callback, targetSize)
将项目抓取到内存中的图像中.
抓取异步发生,JavaScript 函数回调抓取完成时调用.
使用 targetSize 指定目标图像的大小.默认,结果将与项目具有相同的大小.
如果无法启动抓取,则函数返回 false.
以下代码段显示了如何抓取项目并存储结果到一个文件.
矩形{编号:来源宽度:100高度:100梯度:梯度{GradientStop { 位置:0;颜色:钢蓝色"}GradientStop { 位置:1;颜色:黑色" }}}//...source.grabToImage(函数(结果){result.saveToFile("something.png");});
以下代码段展示了如何抓取一个项目并使用结果另一个图像元素.
图片{编号:图像}//...source.grabToImage(函数(结果){image.source = result.url;},Qt.size(50, 50));
注意:此函数会将项目渲染到屏幕外的表面并将该表面从 GPU 的内存复制到 CPU 的内存中,可能相当昂贵.对于实时"预览,请使用图层或着色器效果源.
这也适用于 QtQuick 2.0.
I know how to take a screenshot of the whole window in QML.
I have a Video
element in the QML window. That video is shown in a Rectangle
.
What would be the way to take a screenshot of that Rectangle
rather than the whole window?
解决方案
Take a look at Item
's grabToImage
method.
bool grabToImage(callback, targetSize)
Rectangle {
id: source
width: 100
height: 100
gradient: Gradient {
GradientStop { position: 0; color: "steelblue" }
GradientStop { position: 1; color: "black" }
}
}
// ...
source.grabToImage(function(result) {
result.saveToFile("something.png");
});
Image {
id: image
}
// ...
source.grabToImage(function(result) {
image.source = result.url;
},
Qt.size(50, 50));
This works with QtQuick 2.0 too.
这篇关于在 QML 中截取特定项目的屏幕截图的方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!