2

アスペクト比を維持しながら、キャンバスの背景を埋めるためにpng画像を設定しようとしています。まず、ビットマップに変換します。次に、Canvas クラスの setBitmap メソッドを使用して背景を設定します。

http://developer.android.com/reference/android/graphics/Canvas.html#Canvas(android.graphics.Bitmap )

public class PlayOn extends View{

Bitmap board;

public PlayOn(Context gamecontext)  {
    super(gamecontext);             
    board=BitmapFactory.decodeResource(getResources(),R.drawable.board_rev1);
}

@Override
protected void onDraw(Canvas mycanvas) {

    super.onDraw(mycanvas);
    mycanvas.setBitmap(board);

}
}

しかし、この拡張 View クラスを呼び出すアクティビティに移動すると、アプリケーションが予期せず停止したというエラーが表示されます。また、Canvas および Bitmap クラスの他の関数をいくつか試してみましたが、何も機能していないようです。

これを行う最善の方法は何ですか?Android開発者サイトで、画像をキャンバスにして他の画像をその中に描画できるように設定する方法があることを読みましたが、その方法を理解できませんでした。

ありがとう!

4

1 に答える 1

2

Log.dを追加して、ボードビットマップがから返されたことを確認することをお勧めします

BitmapFactory.decodeResource(getResources(),R.drawable.board_rev1); 

nullではありません。しかし、私はいくつかのアプリケーションでonDrawのフルスクリーンビューにビットマップを描画するために以下を使用しているので、ビットマップがnullでない場合は、正常に機能するはずです。

canvas.drawBitmap(mBitmap, 0, 0, null);

そして、スケーリングするバージョンのdrawBitmapがあります。

void canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
Draw the specified bitmap, scaling/translating automatically to fill the 
destination rectangle.

あなたはそれを試してみたいかもしれませんか?

于 2011-05-05T01:08:21.143 に答える