0

ビットマップを回転させようと数時間試しましたが、うまくいきませんでした。私はこのWebサイトでこのテーマに関する多数の記事を読みましたが、好ましい解決策は一時的なキャンバスを作成することであるようです。さて、私はこれをしました、そして、私はまだローテーションされたビットマップを見ません。

私のビットマップは40x40の青い正方形で、45度回転させようとしています。それは多くを求めていませんか?コードが実行されると、画面に表示されるビットマップは回転されていないオリジナルです。(私も翻訳を試みましたが、成功しませんでした)

これが私のコードです:

// Load the bitmap resource
   fillBMP2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.test1);
   // Copy to a mutable bitmap
   mb = fillBMP2.copy(Bitmap.Config.ARGB_8888, true);
   // Create canvas to draw to
   Canvas offscreenCanvas = new Canvas (mb);
   // Create Matrix so I can rotate it 
   Matrix matrix = new Matrix();
   matrix.setRotate (45); 
   offscreenCanvas.setMatrix (matrix);
   // Send the contents of the canvas into a bitmap
   offscreenCanvas.setBitmap(mb);

後でOnDrawで、次のことを行います。

canvas.drawBitmap(mb, 200, 200, null);

私が間違っていることについて何か考えはありますか?うまくいくようです。

ありがとう

4

3 に答える 3

1

これを使ってみてください

Matrix matrix = new Matrix();
matrix.setRotate(15);
canvas.drawBitmap(bmp, matrix, paint);

setRotationメソッドは、回転の角度を表す float を受け取ります。

于 2012-08-28T22:19:15.963 に答える
1

これを試して...

    Matrix matrix = new Matrix();

    float px = 200;

    float py = 200;

    matrix.postTranslate(-bitmap.getWidth()/2, -bitmap.getWidth()/2);

    matrix.postRotate(45);

    matrix.postTranslate(px, py);

    canvas.drawBitmap(bitmap, matrix, paint);
于 2014-05-01T11:09:56.083 に答える
0

あなたは間違いなく変換を使用したい: このリンクをチェックしてください.

基本的にはこれです:

// save the canvas
ctx.save();

// move origin to center
ctx.translate(x,y); 

// rotate
ctx.rotate(angle * (Math.PI / 180));

// draw image
ctx.drawImage(image, x, y, w, h, .w/2, h/2, w, h);

// restore
ctx.restore();
于 2012-08-29T00:29:38.673 に答える