2010-11-22 17 views
1

Ich habe eine Bitmap auf ImageView angezeigt jetzt möchte ich eine Möglichkeit geben, Kommentar vom Benutzer auf dieser Bitmap geschrieben schreiben.Kommentar zu Bitmap schreiben

ich versuchte

Canvas canvas = new Canvas(srcBitmap); canvas.drawText("Hello", 100,100,null); 

verwenden, aber dies gibt mir Fehler folgende

java.lang.IllegalStateException: Immutable Bitmap übergeben Konstruktor

später i auf Leinwand möchte dieses ganze Bild eine Bitmap

speichern

Antwort

1

Woher haben Sie Ihre Bitmap? Aus der Ausnahme bedeutet das, dass Sie eine Ressource/ein Asset direkt verwenden, die nicht geändert werden kann (es ist in der tatsächlichen apk). Um dies zu vermeiden, müssen Sie eine Kopie der Bitmap erstellen und für die Zeichenfläche verwenden. Hier haben Sie ein paar examples zum arbeiten.

+0

Nun, ich bin beschneiden, dass Bitmap und speichern sie in einer temporären Variable danach habe ich versucht, wandelbar Bitmap zu erstellen, indem sie zu kopieren, aber jetzt bin ich immer Nullpointer-Ausnahme, wenn i Zugriff canvas.drawText Code ist #### endgültig Drawable d = mPhotoView.getDrawable(); Bitmap bOriginal = ((BitmapDrawable) d) .getBitmap(); Bitmap bMutable = bOriginal.copy (Bitmap.Config.ARGB_8888, true); Canvas Canvas = neues Canvas (bMutable); canvas.drawText ("Hallo", 200, 200, null); – Hunt

+0

Ich glaube, ich bin Null in Paint übergeben (letzter Parameter Null), die ein Problem verursacht – Hunt

+0

Suchen Sie nach einer Kopie .... http://developer.android.com/reference/android/graphics/Bitmap.html – ykatchou

0

Wie Moss darauf hingewiesen hat, muss die Bitmap änderbar sein. Hier finden Sie einige Quellcode, wie Sie es tun können:

//first, get bitmap and make it mutable 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); 
Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 
//now, create canvas and paint as you like 
Canvas canvas = new Canvas(mutableBitmap); 
Paint paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStrokeWidth(5); 
canvas.drawLine(0, 0, canvas.getWidth(), canvas.getHeight(), paint); 
//finally, convert back to icon 
Drawable icon = new BitmapDrawable(context.getResources(), mutableBitmap); 
getSupportActionBar().setIcon(icon); 
Verwandte Themen