1

MyViewデモアプリを使用してキャンバスにコンテンツを描画するために使用していますFingerPaint API。キャンバスに書いたものは何でもキャプチャしたい。しかし、私が使用View v1 = myview.getRootView()すると、コンテンツではなく空白のキャンバスのみが返されます。描いた絵をSDカードに保存したいです。以下は私のコードです。何を変更する必要があるか教えてください

v1 = myview.getRootView();
System.out.println("v1 value = "+v1);
v1.buildDrawingCache(true);
v1.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
           MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
//v1.layout(0, 0, v1.getMeasuredWidth(), v1.getMeasuredHeight()); 
v1.layout(0, 0, 100, 100); 

//Bitmap b = Bitmap.createBitmap(v1.getDrawingCache());
myview.mBitmap = Bitmap.createBitmap(v1.getDrawingCache());
System.out.println("BITMAP VALue = "+myview.mBitmap);

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
//b.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
File f = new File(Environment.getExternalStorageDirectory()+ File.separator + "test.jpg");
try {
    f.createNewFile();
    FileOutputStream fo = new FileOutputStream(f);
    fo.write(bytes.toByteArray());
} catch (Exception e) 
{
    e.printStackTrace();
}
v1.setDrawingCacheEnabled(false);

myviewMyViewを拡張するクラスのオブジェクトですView

4

1 に答える 1

0

myview オブジェクトを直接使用して、現在のビュー/キャンバスを取得できます

myview.setDrawingCacheEnabled(true);
Bitmap b = myview.getDrawingCache();

不変の画像にはこれを使用します

Bitmap b = myview.getDrawingCache().copy(Config.ARGB_8888, true);

そして、このビットマップを画像ファイルとして保存できます

于 2012-04-12T06:09:12.587 に答える