0

次のコードを使用して、ビットマップ変数を初期化します。

Bitmap bitmap = ((BitmapDrawable)this.model.gameView.context.getResources().getDrawable(R.drawable.pic1)).getBitmap();

そのビットマップの幅をログに記録しようとすると、ログはその呼び出しに対して何も出力しません。

コードをトレースしたので、その行に到達していることがわかります。

また、ビットマップに対してcanvas.drawを実行しようとすると、画面に何も描画されません。

長方形で描くものはすべてうまくいきます。

私の画像リソースはPNGです。

どんな助けでも大歓迎です!

4

3 に答える 3

2

ビットマップクラスに対してこのようなものを試してください。

public class DrawBitmap extends View
{
    Bitmap bitmap;

    public DrawBitmap(Context content)
    {
        super(content);

        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        canvas.drawColor(Color.BLACK);//whatever color you want, make sure it's not the same as your image
        canvas.drawBitmap(bitmap, (canvas.getWidth()), 0, null);
    }
}

メインクラス

public class Main extends Activity 
{

    DrawBitmap myView;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myView = new DrawBitmap(this);
        setContentView(myView);
    }
}
于 2012-08-09T20:18:55.137 に答える
1

BitmapFactory.decodeResourceを使用してみてくださいこのトピックの答えを見てください:Drawableを ビットマップに変換する方法は?

于 2012-08-09T19:55:08.847 に答える
0

ちょうどそれを理解しました。私が使ったビットマップの読み込み方法とは何の関係もありませんでした。それは私の側の論理的なエラーでした。私のコードは、ビットマップがnullになるケースに誤って到達し、キャンバスにnullリソースを描画しようとしました。

于 2012-08-09T20:19:34.977 に答える