53

キャンバス上でアプリを開発しようとしています。キャンバス上にビットマップを描画しています。描画後、ビットマップ画像に変換しようとしています。

誰かが私に提案を与えることができますか?

4

4 に答える 4

74

アドバイスはあなたがやろうとしていることに依存します。

コントロールの描画に時間がかかることが心配で、キャンバスを介して再描画するのではなく、ビットマップをブリットできるようにビットマップに描画したい場合は、プラットフォームを二重に推測する必要はありません。 -コントロールは、描画を一時的なビットマップに自動的にキャッシュします。これらは、を使用してコントロールからフェッチすることもできます。getDrawingCache()

キャンバスを使用してビットマップに描画する場合、通常のレシピは次のとおりです。

  1. を使用して正しいサイズのビットマップを作成しますBitmap.createBitmap()
  2. Canvas(Bitmap)コンストラクターを使用して、このビットマップを指すキャンバスインスタンスを作成します
  3. キャンバスに描く
  4. ビットマップを使用する
于 2010-10-25T10:43:35.353 に答える
26

Bitmapたとえば、次のように新しい を作成します。

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )

widthあなたのキャンバスとheight同じです。

次に、 を使用しますが、 は使用canvas.setBitmap(myBitmap)しませんdrawBitmap()

を呼び出した後setBitmap、実際にキャンバスに描画するものはすべて、myBitmap私が示したサンプル コードに従って描画することです。

編集

次のようなビットマップを直接作成することはできません。

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );

代わりに次を使用する必要があります。

Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );
于 2012-07-11T16:45:18.913 に答える
2

その他の例:

public Bitmap getBitmapNews(int item , boolean selected, int numbernews){                   
        Bitmap bitmap;

        if(selected)
            bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true);
        else 
            bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true);

        Canvas canvas = new Canvas(bitmap);

        if(numbernews<10){
        canvas.drawBitmap(mNotiNews[numbernews],0,0,null);
        }else{
            canvas.drawBitmap(mNotiNews[0],0,0,null);
        }

 return bitmap; 
}
于 2014-02-19T09:07:02.747 に答える
1

キャンバスからビットマップに変換し、ギャラリーまたは特定のフォルダーに保存する手順は次のとおりです。

注: WRITE_EXTERNAL_STORAGEの許可を与えていることを確認してください。

activity_main.xml

            <LinearLayout
                android:id="@+id/linearLayout"
                android:orientation="horizontal"
                android:layout_margin="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <DrawingView
                    android:id="@+id/drawingView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

            </LinearLayout>

MainActivity.java

  1. 親レイアウトの参照を作成

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
    
  2. ギャラリーに保存するには

    final String imagename = UUID.randomUUID().toString() + ".png";
    MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");
    
  3. ビットマップに変換するには

    linearLayout.setDrawingCacheEnabled(true);
    linearLayout.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());
    
于 2017-01-11T06:20:08.603 に答える