Draw bitmaps from resources over another

亡梦爱人 提交于 2019-12-01 03:24:45

问题


I have got two bitmaps, background and foreground. How do I draw bitmap foreground on background without using another Canvas?

Solution:

1) First create bitmaps from resources with additional option ARGB_8888

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

2) Declare bitmaps

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

3) Inside onDraw() function draw graphics

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); 
}

And as Soxxeh said, this is very good source of information: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html


回答1:


Try this:

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

The second image (foreground image) has to have Alpha aspects or you can't see through it.




回答2:


If you use an ImageView you can set the first bitmap as a background and the second as an image source.

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


来源:https://stackoverflow.com/questions/10963838/draw-bitmaps-from-resources-over-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!