从Android Canvas获取像素值

时间:2010-07-09 12:29:13

标签: android canvas bitmap save

我目前正在使用surfaceView编写Android游戏。我尽可能地优化了游戏并且运行得非常顺利。但是,我有碰撞检测,这有点凌乱。我想通过直接从画布读取像素来进行碰撞检测。这可能吗?我发现最接近这个是使用setBitmap将新位图附加到画布。然后,当我画到画布时,位图将被更新。这会是要走的路吗?感谢。

3 个答案:

答案 0 :(得分:1)

虽然您应该以不同的方式管理碰撞检测,但您可以使用下一行代码获取给定位置的像素颜色:

mView.mBitmap.getPixel(j, i)

mView是包含画布的视图,mBitmap是用于创建画布的位图:

Canvas mCanvas = new Canvas(mBitmap);

答案 1 :(得分:0)

来自Canvas API

  

Canvas类持有“平局”   调用。画一些东西,你需要4   基本组件:一个用于保存的位图   像素,一个Canvas来托管绘图   调用(写入位图),a   绘图原语(例如Rect,Path,   文本,位图)和绘画(到   描述颜色和样式   图)。

所以你不会要求画布提供像素数据,因为画布本身并不真正“拥有”像素数据。用于进行绘制调用的画布始终附加到位图(您正在绘制的位图),因此位图是您应该从中获取像素数据的位置。

碰撞检测通常成本很高,但是基于位图的过程可能会使情况变得更糟,这取决于您尝试做什么。只是一个抬头。

答案 2 :(得分:0)

我同意乔希。如果精度在您的应用程序中非常重要,您可能希望将屏幕尺寸/分辨率数据合并到某种物理引擎中。试图完全基于可视化处理来构建物理引擎可能是不必要的代价。