我工作的应用程序,它是在画布上类似于从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;
这里是图像的一个例子:
这里是我的画布看起来像保存之前:
这里是它保存在SD卡上后的图像: