在android上围绕中心旋转位图

时间:2017-03-24 17:36:41

标签: android matrix bitmap rotation

美好的一天,在浪费了3个多小时之后我的第一个问题。我已经回顾了几十个不同的帖子,这些帖子有类似的问题和一小部分答案。

我正在设计一个带位图和角度的函数,并返回一个旋转版本,用于我的宇宙飞船安卓游戏

public static Bitmap RotateBitmap(Bitmap source, float angle){ 


    Matrix matrix = new Matrix();

    matrix.setRotate(angle, source.getWidth()/2,  source.getHeight()/2);

    return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);

}

我尝试了几种不同的选项,混合翻译,后期和预旋转方法,但都证明是无效的。我不得不承认我对矩阵的知识有限但是android开发人员的资料对我来说似乎很清楚,但我试过的任何方法都会对枢轴点做任何事情。旋转总是发生,但有效地将我的船转移到其他六角

提前致谢^^

2 个答案:

答案 0 :(得分:0)

无法使用此功能进行管理,因此我最终制作了另一个具有相同效果的功能。

public void rotate(Bitmap paramBitmap, float angle, Canvas canvas, int x, int y)
{
    canvas.save();
    canvas.translate(x, y);
    canvas.rotate(angle);
    canvas.translate(-paramBitmap.getWidth() / 2, -paramBitmap.getHeight() / 2);
    canvas.drawBitmap(paramBitmap, 0, 0, new Paint());
    canvas.restore();

}

它会旋转画布

答案 1 :(得分:0)

在您发布此问题时,我到达的地点与您相同。我的位图旋转了,但也偏移了。直到您在其下方或上方放置另一个图像,该偏移量才非常明显,然后变得非常明显。
澄清一下,您是否要解决的问题是围绕着飞船图像旋转整个显示器,使位图图像保持静态(即始终指向同一方向)? 我正在考虑使用除Canvas以外的其他工具来执行此操作,如果我发现更有效的方法,则会报告。