0

このサイトを検索して、画像を前後に回転する方法を見つけ、このサイトの他の投稿の助けを借りて独自のものを思いつきました。うまく機能します。唯一の問題は、機能するようになったため、逆に回転し、好きなように進めますが、一体どのように画面に配置するのでしょうか? これまでのコードは次のとおりです。

 private Bitmap ray;
    private  int mRot = -33;
    private boolean goRight = true;

    void onRotDraw(Canvas canvas)
    {
        int width = ray.getWidth();
        int height = ray.getHeight();

        if (mRot > 30){
            goRight = false;
        }
        if (mRot < -30){
            goRight = true;
        }
        if (goRight){
            mRot += 1;
        }else
        {
            mRot -= 1;
        }
               canvas.rotate(mRot,width / 2,height / 2);
               this.Draw_Sprite(canvas, 0, mRot ); 

    }

    public void Draw_Sprite(Canvas c, int whatever, int rot) {  
        //rotating image back and forth
        int width = ray.getWidth();
        int height = ray.getHeight();
         Rect src = new Rect(width - width, height - height, width, height);
         Rect dst = new Rect(width - width, height - height,   width,  height); 
         c.drawBitmap(this.ray, src, dst, null);
    }

通常は drawBitmap を使用して画像を配置しますが、これは四角形のサイズの代わりに src と dst を使用するため、今ではうまく機能しますが、画面上の位置を 0,0 から必要な場所に変更するにはどうすればよいですか?トーゴ?

これは、部分的または大部分が次の投稿から取られたものです: Canvas.DrawBitmap を使用した Android でのスプライトの回転。私は近くにいます、私は何が間違っていますか?

これにより、画面上の x と y の位置を設定する方法を除いて、これを行うために必要なすべてが得られました。これに関する助けがあれば大歓迎です。運のないxとyの位置と、おそらく単純なものです。前もって感謝します。

4

1 に答える 1

1

これは、参照した他の投稿のコードです。

Rect src = new Rect(0, 0, width, height);
Rect dst = new Rect(x, y, x + width, y + height);

ビットマップの位置を決定するのは、dst Rect の x と y です。

あなたのコード:

Rect src = new Rect(width - width, height - height, width, height);
Rect dst = new Rect(width - width, height - height,   width,  height);

幅 - 幅が 0 になり、高さ - 高さが 0 になるため、常に 0, 0 で描画します。

于 2012-03-12T23:26:06.727 に答える