如何在Android中围绕图像中心旋转位图而不会发生振荡运动

如何在Android中围绕图像中心旋转位图而不会发生振荡运动,第1张

概述我想根据用户点击10度旋转位图图像.在众多stackoverflow和谷歌答案之后,我尝试了各种Matrix旋转组合. 然而,图像并没有像预期的那样真正旋转,并且给出了关于画布中心的旋转振动的抖动视图.为了测试,每次调用对象的绘制方法时,我都会将旋转角度增加10度(而不是点击次数).图像是一个对称的圆圈[64×64包围矩形]我希望它在屏幕中心围绕它自己的中心像一个轮子一样旋转,但它会旋转并沿着对角 我想根据用户点击10度旋转位图图像.在众多stackoverflow和谷歌答案之后,我尝试了各种Matrix旋转组合.

然而,图像并没有像预期的那样真正旋转,并且给出了关于画布中心的旋转振动的抖动视图.为了测试,每次调用对象的绘制方法时,我都会将旋转角度增加10度(而不是点击次数).图像是一个对称的圆圈[64×64包围矩形]我希望它在屏幕中心围绕它自己的中心像一个轮子一样旋转,但它会旋转并沿着对角线向右下方移动并以振荡的方式向后移动到屏幕中心.

public voID draw(Canvas canvas) {    Matrix matrix = new Matrix();    rotation += 10;    float px = this.vIEwWIDth/2;    float py = this.vIEwHeight/2;    matrix.setRotate(rotation,bitmap.getWIDth()/2,bitmap.getHeight()/2);    Bitmap newbmp = Bitmap.createBitmap(bitmap,getimgWIDth(),getimgHeight(),matrix,true);    canvas.drawBitmap(newbmp,px - (getimgWIDth()/2),py - (getimgHeight()/2),null); }
解决方法 这是一个例子.
我打破了它的3个步骤.
第一个转换移动位图,使其中心位于0,0
然后旋转,
最后将位图中心移动到画布上的所需位置.
您不需要第二个位图.
Matrix matrix = new Matrix();rotation += 10;float px = this.vIEwWIDth/2;float py = this.vIEwHeight/2;matrix.postTranslate(-bitmap.getWIDth()/2,-bitmap.getHeight()/2);matrix.postRotate(rotation);matrix.postTranslate(px,py);canvas.drawBitmap(bitmap,null);

作为优化,在此方法之外创建一次Matrix,并通过调用matrix.reset()替换创建

总结

以上是内存溢出为你收集整理的如何在Android中围绕图像中心旋转位图而不会发生振荡运动全部内容,希望文章能够帮你解决如何在Android中围绕图像中心旋转位图而不会发生振荡运动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1136886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存