[英]How to move and rotate a bitmap in a canvas using a matrix in android/java?
[英]Code to rotate a bitmap using Matrix causing force close
我正在做一个简单的游戏,球在斜坡上滚动,必须通过跳跃来避开障碍物。 当我尝试使用Matrix
旋转球形物体时,问题就来了。 我正在使用以下代码:-
private void rotateMe() {
if(jump==0){
Matrix mtx=new Matrix();
mtx.postRotate(deg);
Bitmap rotatedBMP=Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), mtx, false);
deg=deg+1; //deg=0 in beginning
bm=rotatedBMP;
}
}
此方法写在ball类中,该类由另一个方法move()内部调用。 bm的位图没有按我的意愿旋转。 它只是从屏幕上掉出来,似乎位图的大小已增加。 我必须在几秒钟后强行关闭它。
我见过其他旋转位图问题,但它们对我也不起作用。 提前致谢。
您一直在旋转具有相同值( 10
)的Matrix
。 这就是为什么球不旋转的原因。 而是执行以下操作: mtx.postRotate(deg);
另外,一个一般性的评论:我猜您正在绘制生成的旋转球bm
? 如果您要在其他线程上绘制球,那么您应该首先查看的是确保您的线程对bm
具有独占访问权,以便在bm=rotatedBMP;
新值影响球时不会渲染球。 bm=rotatedBMP;
无论如何我自己找到了答案。 我现在使用的代码如下(对于那些有相同问题的人)
Matrix mtx=new Matrix();
mtx.postRotate(deg,25,25);
mtx.postTranslate(x, y);
c.drawBitmap(bm, mtx, paint);
deg=deg-10;
代码现在运行良好。 不管怎么说,多谢拉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.