gpt4 book ai didi

qt - 在 QML 中截取特定项目的屏幕截图的方法是什么?

转载 作者:行者123 更新时间:2023-12-05 08:57:25 24 4
gpt4 key购买 nike

I know how to take a screenshot of the whole window in QML .

我在 QML 窗口中有一个 Video 元素。该视频显示在 Rectangle 中。

截取 Rectangle 而不是整个窗口的屏幕截图的方法是什么?

最佳答案

这是一个非常有趣的问题。作为一种快速有效的解决方案,我可以建议您使用 grabToImage Item的方法.它以第一个参数作为回调函数,第二个参数作为您要保存的路径。

我写了一个小函数来抓取任何 Item:

// what -- name of item needed to be grabbed
// where -- string
function render(what, where) {
// Find existent item with given name `what`
var i = 0
var found = false
for (i = 0; i < window.contentItem.children.length; i++) {
if (window.contentItem.children[i].objectName === what) {
// We found respective item
found = true
break
}
}
if (found) {
console.log("We found item " + what + ". Grabbing it to " + where)
var item = window.contentItem.children[i]
// Grab image and save it (via callback f-ion)
item.grabToImage( function(result) { result.saveToFile(where) })
} else {
console.warn("No item called " + what)
}
}

因此您可以像在 QML/QtQuick 端一样使用它,就像在 Qt 上一样(使用 QMetaObject::invokeMethod )。


还有QQuickItem::grabToImage方法,但我很高兴看到它的用法的任何适当示例。


另一种抓取方式是使用 ShaderEffectSource随心所欲地使用。


我上面写的所有内容都是作为一个项目准备的,位于 github .代码已注释,所以希望一切都会清楚。您可以拿走它并进行一些黑客攻击。也欢迎拉取请求。

关于qt - 在 QML 中截取特定项目的屏幕截图的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33183743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com