2012-06-09 12 views
6

üzerinde kaynaklardan bitmapler çizin İki bitmap, arka plan ve ön planda var. Başka bir Canvas kullanmadan arka planda bitmap ön planını nasıl çizebilirim?Başka bir

Çözüm:

1) İlk ARGB_8888

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig = Bitmap.Config.ARGB_8888; 

2) onDraw'da İçinde bitmap'leri

Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.background, options); 
Bitmap foreground = BitmapFactory.decodeResource(getResources(), R.drawable.foreground, options); 

3)() fonksiyonu beraberlik grafikleri beyan ek ayarlar ile kaynaklarından bitmapleri oluşturmak

protected void onDraw(Canvas canvas)  
{ 
    canvas.drawColor(Color.White); 

    Paint paint = new Paint(); 
    canvas.drawBitmap(background, 0, 0, paint); 
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); 
    canvas.drawBitmap(foreground, 0, 0, paint); 
} 
.210

Ve Soxxeh söylediği gibi, bu bilgilerin çok iyi kaynağıdır: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html

+1

Bu çözüm işe yarıyor mu, yoksa bir soru mu soruyordunuz? –

cevap

5

bu deneyin:

canvas.drawBitmap(backgroundImageBitmap, 0.0f, 0.0f, null); 
canvas.drawBitmap(foregroundImageBitmap, 0.0f, 0.0f, null); 

ikinci resim (ön plan görüntüsü) Alfa yönlerini sahip olması veya bunun göremiyorum .

+0

Android'de ön plan bitmapinin bu Alfa yönleri nasıl ayarlanır? – Kris

+1

Bitmap oluşturduğunuzda, ona bir RGBA_8888 parametresi verin, ardından normal olarak çizin (arka plan rengini ayarlama). Bkz. [Bitmap.Config] (http://developer.android.com/reference/android/graphics/Bitmap.Config.html). [Bu örnek] (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html) size bazı fikirler de verebilir. – Eric

+0

Teşekkürler! Sonunda çalışıyor! – Kris

1

Bir ImageView kullanırsanız, ilk bitmap'i bir arkaplan olarak, ikincisini de bir resim kaynağı olarak ayarlayabilirsiniz.

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background" 
    android:src="@drawable/foreground"/> 
+0

ImageView kullanmıyorsanız ne olur? –

+0

- FrameLayout üzerinde setForeground() aracılığıyla bir ön plan belirtebilirsiniz. - Katmanların üst üste yerleştirilmesi için LayerDrawable'ı da kullanabilirsiniz. - Else sadece Eric'in yaklaşımı ile devam edin. – jakk