1

さて、私は変数をとるメソッドを持っています:image、int x、int y、floatangle。

私はキャンバスを使用しておりMatrix transform = new Matrix();、画像を中央で回転させるためにを使用しています。xただし、との座標で画像を描画したいy。何らかの理由で、私が使用したすべての異なる方法が機能していません。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つのSOの質問と回答を読みましたが、必要なものはありません。

私は本当に緊急に答えとコードが必要です、ありがとう。

4

1 に答える 1

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);
}

回転する前に画像を平行移動すると、画像は期待した場所に移動しません...

于 2012-08-25T17:56:47.213 に答える