如何在Android中绘制到画布的多个图像之间旋转特定图像?

时间:2010-06-16 08:20:13

标签: android animation canvas

我需要一些帮助,在多个图像中围绕轴心旋转一个图像,这些图像被绘制到android中的画布。

我正在将图片加载到画布,如下所示。

canvas.drawBitmap(mMachineBackground, 0, 0, null);
canvas.drawBitmap(mMachineRotator, 0, 0, null);

我想只围绕轴中心旋转第二个位图,而不是旋转整个画布(也包括第一个位图)。

提前致谢。

3 个答案:

答案 0 :(得分:6)

您可以围绕中心轴旋转:

Matrix matrix = new Matrix();

//move image

matrix.setTranslate(getXPos() - (imageWidth / 2), getYPos() - (imageHeight / 2));

//rotate image, getXPos, getYPos are x & y coords of the image

matrix.postRotate(angleInDegrees, getXPos() - imageWidth / 2, getYPos() - imageHeight / 2);

//rotatedBMP is the image you are drawing, 

canvas.drawBitmap(rotatedBMP, matrix, Paint);

答案 1 :(得分:1)

//Drawing the Player Canon.
           Matrix matrix = new Matrix();
           //move image
           newHeight = getHeight() - canon1[0].getHeight() - stand1.getHeight();
           Log.d(TAG, "New Height : " + newHeight);
           //matrix.setTranslate(0, getHeight() - canon1[0].getHeight() + stand1.getHeight());
           matrix.setTranslate(-newHeight,newHeight);

           //   rotate image, getXPos, getYPos are x & y coords of the image (ANgle in degree)).
           //matrix.postRotate(45, 0, getHeight() - canon1[0].getHeight() + stand1.getHeight());
           matrix.postRotate(-30,0,0);
           //Draw function. 
           canvas.drawBitmap(canon1[0], matrix, null);

我从上面代码的引用中编写的这段代码非常合适。

我可以在画布上旋转特定图像。

答案 2 :(得分:0)

恐怕你不能这样做。 就我到目前为止所学到的,您可以旋转整个上下文,但不能旋转单个位图。我所知道的转换矩阵只能应用于整个画布。 (我不是画布大师,但我正在对你同样的问题做广泛研究)