我正在從Canvas上繪製類似於Android SDK的Finger Paint演示的應用程序。我的問題是當我使用PorterDuff.Mode.CLEAR
。當繪圖和畫布,如果我試圖抹去的東西,它工作正常。但如果我試圖保存我的圖像作爲PNG
文件,橡皮的筆觸顏色是黑色的,我不知道爲什麼會發生這種情況。這裏有一個例子我在做什麼:Android Paint PorterDuff.Mode.CLEAR
@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卡後:
什麼的Bitmap.Config你使用? RGB_565或RGBA_8888? – Renard
'Bitmap.Config.ARGB_8888' –
你可以在壓縮之前顯示你在mBitmap上繪製的代碼嗎? PortDuff清除意味着結果顏色爲0(黑色)。你偶然將油漆的α值設置爲零? – Renard