在前面的问题(propagateComposedEvents: mouse data not accurate?)中,我有一个例程(下面),用于检查鼠标单击点是否位于Canvas组件中的透明像素上。
var imageData = ctx.getImageData(mouseX, mouseY, 1, 1)在我的用例中,缓存"imageData“有什么可执行的理由吗?或者会反对缓存的内存问题。或者我只是盯着那条线太久了.
MouseArea {
anchors.fill: parent
drag.target: parent
propagateComposedEvents: true
onClicked: {
var ctx = parent.getContext("2d")
var imageData = ctx.getImageData(mouseX, mouseY, 1, 1)
if (imageData.data[3] == 0 ){
console.log("graphic alpha clicked:", mouseX, mouseY);
mouse.accepted = false;
} else {
mouse.accepted = true;
}
}
}发布于 2016-01-04 19:33:12
图像可能不会改变,但是看看如何得到其中的一个像素,并考虑到单击的位置将发生变化,除非缓存整个图像,否则缓存是没有意义的。
你真的应该分析一下,因为这里有几个因素在起作用:
即使它不是一个性能热点,它最好是高效的,做不必要的工作仅仅因为你可以摆脱它是一个坏习惯,它消耗能源,CPU时间和耗尽电池。做很多这样的事情最终会让你陷入困境,因为这些都是堆积如山。
https://stackoverflow.com/questions/34596410
复制相似问题