我现在面临这个问题2天了。我正在通过Canvas制作一个2D游戏,它有一个PNG文件,我在画布上用drawBitmap()绘制,它工作正常。
但对于Per-Pixel-Collision检测,我使用的是getPixel(),但它总是返回0。
我正在以下列方式创建位图 -
Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), R.drawable.image);
//image is a PNG file
但是以下总是给出0 -
Toast.makeText(getContext(),""+bmp.getPixel(x,y), Toast.LENGTH_SHORT).show();
//x and y are within the boundary
我甚至尝试了以下内容,但结果相同 -
BitmapFactory.Options opt=new BitmapFactory.Options();
opt.inMutable=true;
Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), R.drawable.image,opt);
作为初学者,我对位图和配色方案没有太多的了解,所以,为什么会发生这种情况并且任何解决方案都会有很大的帮助。 我的项目在这个问题中途停滞不前。
谢谢
答案 0 :(得分:0)
自己找到解决方案。它是一种解决方法,而不是一种解决方案,但它确实有效。
只需将 BitmapFactory.Options 对象传递给 BitmapFactory.decodeStream ,如下所示。
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap source = BitmapFactory.decodeStream(context.getResources(), R.image,opt);