首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >画布:缓存imageData

画布:缓存imageData
EN

Stack Overflow用户
提问于 2016-01-04 17:19:46
回答 1查看 334关注 0票数 0

在前面的问题(propagateComposedEvents: mouse data not accurate?)中,我有一个例程(下面),用于检查鼠标单击点是否位于Canvas组件中的透明像素上。

代码语言:javascript
复制
var imageData = ctx.getImageData(mouseX, mouseY, 1, 1)

在我的用例中,缓存"imageData“有什么可执行的理由吗?或者会反对缓存的内存问题。或者我只是盯着那条线太久了.

代码语言:javascript
复制
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;
            }
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-04 19:33:12

图像可能不会改变,但是看看如何得到其中的一个像素,并考虑到单击的位置将发生变化,除非缓存整个图像,否则缓存是没有意义的。

你真的应该分析一下,因为这里有几个因素在起作用:

  • imageData检索是否涉及VRAM到内存的传输??即使对于单个像素,这些都是昂贵的。
  • 这种情况多久发生一次?
  • 整个图像有多大,完全缓存是否可行?

即使它不是一个性能热点,它最好是高效的,做不必要的工作仅仅因为你可以摆脱它是一个坏习惯,它消耗能源,CPU时间和耗尽电池。做很多这样的事情最终会让你陷入困境,因为这些都是堆积如山。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34596410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档