2010-11-22 22 views
1

ImageView üzerinde görüntülenen bir bitmapi var şimdi o bitmapte kullanıcı tarafından yazılan bir yorum yazmak için bir tesis vermek istiyorum.bitmap üzerine yorum yaz

i

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

kullanarak çalıştı ama bu hatayı aşağıdaki beni veriyor

java.lang.IllegalStateException: i üzerinde

sonra yapıcı tuvale geçti Immutable bitmap Bu resmin tamamını kaydetmek için bir bitmap

cevap

1

Bitmap'inizi nereden aldınız? İstisnai bir durumdan, değiştirilemeyen bir kaynağı/varlığı doğrudan kullandığınız anlamına gelir (gerçek apk'de). Bunu önlemek için, bitmap'in bir kopyasını oluşturmanız ve tuval için kullanmanız gerekir. Burada çalışmak için bazı examples var.

+0

Eh ben bundan sonra bu bitmap kırpma ve geçici değişkenine depolamak am erişim tuval.drawText Kod #### final Drawable d = mPhotoView.getDrawable(); Bitmap bOriginal = ((BitmapDrawable) d) .getBitmap(); Bitmap bMutable = bOriginal.copy (Bitmap.Config.ARGB_8888, true); Canvas canvas = new Canvas (bMutable); canvas.drawText ("Hello", 200, 200, null); – Hunt

+0

Sanırım Paint'de null geçiriyorum (son parametre null) bir soruna neden oluyor – Hunt

+0

Bir kopyasını arayın .... http://developer.android.com/reference/android/graphics/Bitmap.html – ykatchou

0

Moss'un işaret ettiği gibi, bitmap'in değişebilir olması gerekir. İşte bunu nasıl bazı kaynak kodu: i kopyalayarak değişken bit eşlem oluşturmak için çalıştı ama şimdi NullPointer istisna zaman ben alıyorum

//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); 
İlgili konular