7

背景前景の2つのビットマップがあります。別のキャンバスを使用せずに、背景にビットマップの前景を描画するにはどうすればよいですか?

解決:

1)最初に、追加オプションARGB_8888を使用してリソースからビットマップを作成します

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

2)ビットマップを宣言します

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

3)onDraw()関数内でグラフィックを描画します

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

Soxxehが言ったように、これは非常に優れた情報源です:http: //developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html

4

2 に答える 2

5

これを試して:

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

2番目の画像(前景画像)はアルファアスペクトを持っている必要があります。そうでないと、透けて見えません。

于 2012-06-09T19:22:58.757 に答える
1

ImageViewを使用する場合は、最初のビットマップを背景として設定し、2番目のビットマップを画像ソースとして設定できます。

<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:src="@drawable/foreground"/>
于 2012-06-09T19:27:55.873 に答える