9

このコードは、サーフェス ビューを拡張し、runnable を実装するクラスに含まれています。このクラスを使用すると、基本的に、さまざまな色などを使用してキャンバスに描画できます。描画後に画像を保存できる方法を取得しようとしていますが、これがその方法です。何をしても、何もない黒い画像が表示されます。何か案は?

キャッシュ描画を有効にしています

カスタム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;
        }
4

1 に答える 1

1

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

さて、あなたのコメントの後、私は「現在のサーフェスビューのビットマップを取得する」とグーグルで検索し、それが私をこのSOの答えに導きました:SurfaceViewからビットマップを作成する

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

更新:以下のチュートリアルに従ってください。貼り付けたコードに基づいて、エラーが何であるかは明確ではありません。SurfaceViewに描画するために必要なことはたくさんありますが、それらを実行したかどうかはわかりません。そのような不足している項目をすべて要求することはできません。基本的なグラフィックプロジェクトについては、以下のチュートリアルに従いました。それらを読んで、何かを見逃していないかどうかを確認する必要があります。

キャンバス描画のチュートリアル:

アンドロイドのすべての部分でグラフィックスで遊ぶ。

Android 2D

于 2013-01-06T12:25:41.570 に答える