Android - 无法使用矩阵在坐标处绘制图像

时间:2012-08-25 17:44:36

标签: java android

好的,我有一个采用变量的方法:图像,int x,int y,float angle。

我正在使用画布,而我正在使用Matrix transform = new Matrix();在其中心旋转图像。但是,我希望在xy的坐标处绘制图像。出于某种原因,我使用的所有不同方法都没有奏效。有时它会将其绘制为0,0或者甚至不会显示在屏幕上。

这是我的伪代码:

//pseudo-code: img_width, img_height
public void drawImage(Bitmap img, int x, int y, float angle)
{
    transform.setTranslate(x, y);
    transform.setRotate(angle, img_width/2, img_height/2);
    canvas.drawBitmap(img, transform, null);
}

我已经让图像旋转,但我希望图像在指定的坐标处绘制:x,y。

我尝试过交换所有变量,使用transform.preRotate,基本上花了1个小时试图弄清楚为什么没有任何效果。我有很多其他图像被绘制到画布上,它们出现在它们应该的位置,但是当我想要旋转时,它不会在指定的坐标处绘制。

我已经阅读了大约5个与此相关的问题和答案,但没有一个能给我我需要的东西。

我真的急需一个答案和代码,谢谢。

1 个答案:

答案 0 :(得分:0)

也许你想写:

public void drawImage(Bitmap img, int x, int y, float angle)
{
  transform.setRotate(angle, img_width/2, img_height/2);
  transform.postTranslate(x, y);
  canvas.drawBitmap(img, transform, null);
}

如果您在旋转之前翻译图像,图像将无法到达您期望的位置...