2013-01-06 20 views
8

サーフェイスビューを拡張し、実行可能なクラスを実装するクラスにこのコードがあります。 クラスを使用することができます。基本的に、異なる色などを使用してキャンバスに描画できます。私はそれが描かれた後に画像を保存する方法を得ることを試みており、これが方法です。私が何をしても、私はそれに何も付いていない黒いイメージを得るだけです。何か案は?カスタムサーフェスビューからビットマップを取得

私はキャッシュ図面を持っているが、私はここにいくつかの他のポストを見てのオプションを使い果たしてしまったと動作するように何かを見つけることができませんでしたSurfaceViewカスタムからビットマップイメージを取得

目的を可能にしました。ここでは、これに最近新しいソリューションがあることを期待しています。多くのありがとう

public Bitmap getImage() { 
      Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), 
        this.getHeight(), Bitmap.Config.ARGB_8888); 
      Canvas canvas = new Canvas(bitmap); 
      this.draw(canvas); 
      return bitmap; 
     } 
+0

は、あなたが何を期待し 'this.getWidth()'と 'this.getHeight()'与えるために? –

+0

新しいビットマップを作成していますが、それには何もありません。次に、その空のビットマップからCanvasを作成します。あなたはどんな描画もしていない、どのように描画を期待することができますか?ちょっとメモ:SurfaceViewのonDraw()メソッドをオーバーライドする場合は、クラスコンストラクタで 'setWillNotDraw(false)'を必ず呼び出してください。 –

+0

私はそれが私が拡張しているクラスであるので、私は表面の幅と高さを取得することを期待しています。 –

答えて

1

あなたの質問はあなたの最後のコメントでのみ明確になりました。上記のコードでは、return bitmapと返信しています。ローカル変数bitmapが返されます。このローカル変数は完全に空白です。ビットマップに描画したり、コード内の別の場所にイメージを関連付けることができます。しかし、上記のコードのビットマップのインスタンスは空白であり、関数のローカルのみです。更新された最新のビットマップを返すとは期待できません。

今、あなたのコメントの後に私はGoogleで「現在のsurfaceviewのビットマップを取得」し、それがSO答えるこれに私を導いた:その質問にはCreate Bitmap from SurfaceView

、それは明らかに代わりにSurfaceViewのビューを拡張することによって解決しました。描画キャッシュは、Viewでのみ機能します。

更新:以下のチュートリアルに従ってください。あなたが貼り付けたコードに基づいて、エラーが何であるかは明らかではありません。 SurfaceViewに描画するために必要なことがたくさんあります。それらを行っているかどうかはわかりません。欠落しているアイテムをすべて尋ねることはできません。基本的なグラフィックスプロジェクトのチュートリアルの後に続きました。あなたはそれらを読んで、あなたが何かを見逃しているかどうかを確認する必要があります。キャンバス図面上

チュートリアル:

Playing with Graphics in androidすべての部品。

Android 2D

+0

方法が必要です。私は他の人がそれをうまく使うのを見ました。コード化されていないだけです。私はそれのパフォーマンスが速くなかったので、動作しない前にビューを使用しました。私が今やろうとしたことは、フィールドのイメージとキャンバスを作ることでした。次にキャンバスに画像を配置し、onDrawを呼び出すときにキャンバスを送信します。まだ動作しませんでした...表面に描画するものや、呼び出されたときの考え。だから私は自分のキャンバスを使用する代わりに挿入することができます。 –

+0

SurfaceView自体がキャンバスに描画されないようにし、自分の 'onDraw()'にタスクをさせるために、クラスコンストラクタから 'setWillNotDraw(false)'を呼び出します。 –

+0

ありがとう、私はすでにそれを含めた。一息はまだそれからイメージを得ることができません。私はonDrawの中にログを持っていて、最初にアプリケーションを開いたときに呼び出されるのを見るだけです。私が平面図に描いているときに呼び出されるのではありませんか?どんな時に呼び出されますか? –

関連する問題