6

私の Android アプリケーションでは、img1 と img2 の 2 つの画像を描画したいと考えています。まず、 img2 を に描画しCanvasます。その後、img2Canvasと重なる img1 を描画します。Img1 には透明な部分が含まれています。問題は、img1 の透明部分が黒色で表示されることですが、img1 の透明部分を通して img2 が見えるようにしたいです。私にはそれができません。この問題を解決するのを手伝ってください。ありがとうございました。

コード:

protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Bitmap b = BitmapFactory.decodeResource(getResources(),
                R.drawable.white_bg);    //img2
        canvas.drawBitmap(b, 0, 0, null);
        canvas.save();

        canvas.drawBitmap(realImage, 0, 0, null);  //img1
    }
4

3 に答える 3

2

bitmap.setHasAlpha(true)ビットマップを読み込んでから試してください。

于 2015-06-10T22:07:33.913 に答える
1

コードを変更した後、出力が得られました。これが私が使用したコードです。

  public class FrameView extends View{

    Bitmap bitmap = null;

    public FrameView(Context context) {
            super(context);
            this.context = context;

        }

        public FrameView(Context context, AttributeSet attrs) {
            super(context, attrs);
            bitmap = Bitmap.createBitmap(this.screenWidth, this.screenHeight,
                    Bitmap.Config.ARGB_8888);

        }

        public FrameView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            this.context = context;
        }

    @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if (isTouchGestures) {
                invalidate();
                mImgDrawables.get(0).draw(canvas);
                canvas.drawBitmap(bitmap, 0, 0, null);
            }

        }

    //this function is invoked from my activity which is using this view
    public void setFrame(int frame) {

            bitmap = BitmapFactory.decodeStream(getResources().openRawResource(
                    frame));

            bitmap = Bitmap.createScaledBitmap(bitmap, this.screenWidth,
                    this.screenHeight, true);

        }
    }
于 2013-10-04T07:54:02.797 に答える
0

Paint オブジェクトを使用して、透明度のアルファ チャネルを設定します。

Paint alphaChannel = new Paint()
alphaChannel.setAlpha(100) // set alpha to 100 for complete transparent
canvas.drawBitmap(b, 0, 0, alphaChannel);
于 2013-10-03T08:20:59.037 に答える