2011-07-26 2 views
1

私はonDrawメソッド内imageView.Theコード内で私のカスタムビューを置くことができるように、ビットマップに描画しようとしている:

public void onDraw(Canvas canvas) {  

    Bitmap drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);  
    canvas.setBitmap(drawGraph);  
    canvas.drawBitmap(drawGraph, 0, 0, bgPaint); 

私の問題がありますこの方法でビットマップを使用しようとすると、黒い画面が表示されるだけです。私はビットマップに描画しようとしないと、残りのコードが表示されることを知っています。

私はラインに

canvas.setBitmap(drawGraph); 

をコメントアウトした場合、すべてが完璧に動作するので、これは問題ですが、私はなぜ知りません。

どこが間違っていますか?

+0

あなたの問題が実際に何であるのか、何が動作していないのかを説明しないことで間違っています。 – Trevor

+0

フェアポイント!私は質問を編集しました。 – user650309

答えて

4

私は2番目のキャンバスを作成する必要がありました。私の作業コードは、それを必要とする人のためのものです。

public void onDraw(Canvas canvas) { 

    Canvas singleUseCanvas = new Canvas();  

    drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);  
    singleUseCanvas.setBitmap(drawGraph); 

    canvas.drawBitmap(drawGraph, 100, 100, bgPaint); 
+0

onDrawは、1〜15回どこでも呼び出すことができます。 'onDraw'の中に' Bitmap.createBitmap'を置くと、OutOfMemoryエラーが発生します。 –

1

私はcanvascanvas2二分法と思います。描画するcanvas2(パラメータ)のみを使用してください。

+0

私はもともと、それをそれに戻しましたが、無駄にしました。確かにこれはうまくいくはずです:\t \tビットマップdrawGraph = Bitmap.createBitmap(canvas.getWidth()、canvas.getHeight()、Bitmap.Config.ARGB_8888); \t \t \t \t canvas.setBitmap(drawGraph); – user650309

+0

私はあなたを敬遠していません。コードが変更されている場合は、質問を更新してください。しかしもう一度、新しいCanvasを作成して、それをparamとして渡すだけで描画するべきではありません。 –