1

作業中のアプリケーションについて少し助けが必要です。絵画用のアプリケーションを作成しようとしていますが、数日前に気付いた問題が1つあり、それを解決するために調査を行うことにしました。PorterDuff.Mode.CLEARブラシを消しゴムとして使用すると、背景が白のときに正常に機能します。しかし、背景を他の色(たとえば、黒のようにmCanvas.drawColor(Color.BLACK);)に設定し、消しゴムを使用した後、消しゴムを使用する場所は白い色でペイントされます。消しゴムの変数を設定する方法は次のとおりです。

erase.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            stamp=false;
            MODE = ERASER_MODE;
            mPaint.setColorFilter(null);
            mPaint.setShader(null);
            mPaint.setMaskFilter(null);
            mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        }
    });

それで、なぜそれが起こっているのか、そしてどうすればその問題を解決できるのかという考えはありますか?

前もって感謝します!

4

1 に答える 1

1

実際、どこに問題があったのかわかります。描画などに使用していたカスタムビューでこれを行っていました

 @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);
        mCanvas.drawColor(parentColor); //parentColor = currentBackgroundColor
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
        canvas.drawPath(mPath, mPaint);
    }

そして私は自分だけを変えなければなりませんでした

于 2012-07-10T07:41:12.843 に答える