旋转位图(大于画布)但以Canvas为中心

时间:2010-09-25 01:21:12

标签: android canvas bitmap rotation

我正在尝试旋转一个位图(比Canvas大)保持它与Canvas居中并且反复及时,以使其显示为旋转。我想发布一个解释情况的图片,但我不能(声誉不够;这是一个很小的因为我花了很多时间做这件事:()。我希望你能理解这是什么问题。

由于我不希望旋转绘制到Canvas的其余drawable,我也不能使用Canvas.rotate()。所以我尝试了使用矩阵的所有不同组合,并使用偏移量将位图绘制到Canvas,例如:

Matrix matrix = new Matrix();
matrix.postRotate(degree); //degree is increasing with time
mrotatedbackground = CreateBitmap(mbackground, (mbackground.getWidth()-screenwidth)/2, (mbackground.screenHeight()-screenheight)/2, screenwidth, screenheight, matrix, true); 
canvas.drawBitmap(mrotatedbackground, -screenwidth/2, -screenheight/2, paint); 

1 个答案:

答案 0 :(得分:1)

是的,您可以使用Canvas.rotate():

onDraw(Canvas c) {
    c.save();
    c.rotate(some_angle);
    c.drawBitmap(...);
    c.restore();
}

Canvas.save()保存当前transorm的副本,并在调用Canvas.restore()时恢复它。

请注意,您可以有多个嵌套的Canvas.save()调用,每个调用都需要您调用Canvas.restore()。