Android Paint PorterDuff.Mode.CLEAR

Я работаю над приложением, которое рисует на Canvas, подобно демо-версии Finger Paint из Android SDK. Моя проблема в том, что я использую PorterDuff.Mode.CLEAR. При рисовании и холсте, и если я пытаюсь что-то стереть, все работает нормально. Но если я попытаюсь сохранить свое изображение как файл PNG, штрихи ластика окрашены в черный цвет, и я не уверен, почему это происходит. Вот пример того, что я делаю:

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

        canvas.drawPath(mPath, mPaint);
    }

Ластик:

case ERASE_MENU_ID:
            mPaint.setXfermode(new PorterDuffXfermode(
                                                    PorterDuff.Mode.CLEAR));
            return true;

И как я сохраняю изображение:

            Calendar currentDate = Calendar.getInstance();
            SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMMddHmmss");
            String dateNow = formatter.format(currentDate.getTime());
            File dir = new File(mImagePath);
            if(!dir.exists())
                dir.mkdirs();

            File file = new File(mImagePath + "/" + dateNow +".png");

            FileOutputStream fos;
            try {
                fos = new FileOutputStream(file);
                mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
                fos.close();
                Toast.makeText(getApplicationContext(), "File saved at \n"+mImagePath + "/" + dateNow +".png", Toast.LENGTH_LONG).show();
            } catch (FileNotFoundException e) {
                Log.e("Panel", "FileNotFoundException", e);
            } 
            catch (IOException e) {
                Log.e("Panel", "IOEception", e);
            }
            return true;

А вот пример изображений:

вот как выглядит мой холст до сохранения:

enter image description here

и вот изображение после сохранения на SD карту:

enter image description here

8
задан Android-Droid 8 May 2012 в 07:29
поделиться