2010-10-21 13 views
7

Bu beni şaşırttı. Bitmap'i bir ImageView'den diğerine kopyalamam gerekiyor. Bir ImageView'ı diğerine kopyalamak istemiyorum çünkü bitmap'in üzerinde bazı değişiklikler yapmam gerekiyor.Bir ImageView öğesinin bitmap içeriğini anoher'e kopyala

İşte çalışmayan bazı kodlar.

ImageView ivSrc = (ImageView) findViewById(R.id.photo); 

ivSrc.setDrawingCacheEnabled(true); 
    Bitmap bmSrc1 = ivSrc.getDrawingCache(); // will cause nullPointerException 

    Bitmap bmSrc2 = Bitmap.createBitmap(ivSrc.getDrawingCache());//bmSrc2 will be null 

    View vSrc = (View) ivSrc.getParent(); 
    vSrc.setDrawingCacheEnabled(true); 
    Bitmap bmSrc3 = Bitmap.createBitmap(vSrc.getDrawingCache()); //black bitmap 

//

bitmap'leri test etmek için:

 ImageView ivDest = (ImageView) findViewById(R.id.photo2); 
     ivDest.setImageBitmap(bmSrc1); //bmSrc1, 2, 3 results shown above 

Bir kopya yapıyor çok kolay olmalı, çünkü yanlış bu konuda gidiş var. TIA

cevap

20

Çizim önbelleğini kullanmıyor ancak buildDrawingCache() yöntemini çağırmanız gerekmiyor mu? Ben de yapardım

yol: bmSrc2 değişken olduğunu

Bitmap bmSrc1 = ((BitmapDrawable)ivSrc.getDrawable()).getBitmap(); 
Bitmap bmSrc2 = bmSrc1.copy(bmSrc1.getConfig(), true); 

Not yani sen bir tuval sokup bir yere çizim önce onunla isterse onu yaparlar.

+0

Ya (değişkenlerinizi kullanarak) 'bmSrc2', negatif genişlik ve/veya yükseklik ile çıkıyorsa? –

İlgili konular