一個看似簡單的問題,我有一個屏幕位圖,我執行一些轉換(旋轉,縮放等),我想在轉換之前存儲位圖的副本,這樣在我的視圖的onDraw()
中,我可以將變換後的屏幕外位圖和未變換位圖的縮小版本顯示爲縮略圖。Android:複製位圖
編寫onDraw()
中的屏幕外位圖沒有問題,但複製的「保留」位圖也正在被轉換。這裏是我提出的位圖,其中mCanvas經mCanvas = new Canvas(mBitmap);
創建的副本代碼:
mPreservedBitmap = Bitmap.createBitmap(mBitmap);
// save the canvas
mCanvas.save();
// do some rotations, scaling
mCanvas.rotate(rotation, px, py);
mCanvas.scale(scaleFactor, scaleFactor, scaleFocusX, scaleFocusY);
// draw the bitmaps to the screen
invalidate();
// restore the bitmap
mCanvas.restore();
在onDraw()
,我有:
// draw the off-screen bitmap to the on-screen bitmap
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
// draw the preserved image, scaling it to a thumbnail first
canvas.drawBitmap(
Bitmap.createScaledBitmap(mPreservedBitmap, (int) thumbWidth, (int) thumbHeight, true),
null,
thumbnailRectF,
thumbCanvasPaint);
縮略圖被縮放到合適的大小,但是縮小到縮略圖大小的位圖也被旋轉和縮放,與mBitmap完全相同,這是我不想要的。我也嘗試了Bitmap.copy()方法,但結果相同。任何指針/協助/建議?
感謝,
保羅
還有什麼你正在做的第一個片段與mCanvas?它似乎沒有做任何事情(旋轉等隻影響未來的操作,而不是圖像本身)。爲什麼你要在OnDraw中複製位圖?通過適當地修改畫布的矩陣,您應該能夠即時縮放縮略圖。 – 2011-03-23 17:05:11
我在代碼中的其他位置使用mCanvas來添加用戶已經繪製到屏幕外位圖的完整形狀。我確實可以將onSampleLoad代碼移出onDraw,我只是在那裏測試了複製/縮放。 – 2011-03-23 19:05:55