2012-04-12 7 views
1

Ich verwende MyView zum Zeichnen von Inhalt auf einer Leinwand mit FingerPaint API Demo-App. Ich möchte alles einfangen, was ich auf die Leinwand geschrieben habe. Aber wenn ich View v1 = myview.getRootView() verwende, gibt es nur die leere Leinwand und nicht den Inhalt zurück. Ich möchte meine Zeichnung in SDCard speichern. Folgendes ist mein Code. Lassen Sie mich wissen, was tun müssen, um iAbrufen der Zeichnung auf dem Canvas mit getRootView

ändern
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); 

myview ist ein Objekt der Klasse MyView die View erstreckt.

Antwort

0

Sie können direkt mit dem myview Objekt verwenden, um die aktuelle Ansicht/Leinwand

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

für unveränderliche Bild Verwendung dieses zu erhalten

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

und dann können Sie diese Bitmap als Bild speichern Datei

Verwandte Themen