我有一個繪圖應用程序,允許用戶繪製到空白畫布。我試圖繪製當前位圖的縮放「縮略圖」,以便當用戶在視圖中縮放時,他們可以引用縮略圖以瞭解它們在整個繪製畫布中的位置。我的縮放工作正常,並且正在將縮略圖顯示在正確的位置,但是當添加新的線條/形狀時,縮略圖似乎並未在後續的onDraw中更新。Android縮放畫布位圖
所以,我有機會獲得潛在的位圖這個觀點(顯示縮略圖,可以很容易地將位圖保存到文件等)我在onSizeChanged下列()進行查看:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// set the canvas height, panning, etc, based on the now inflated View
mWidth = getWidth();
mHeight = getHeight();
mAspectRatio = mWidth/mHeight;
mPanX = 0;
mPanY = 0;
// create the Bitmap, set it to the canvas
mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mCanvas.setBitmap(mBitmap);
draw(mCanvas);
}
然後,當用戶繪製和無效()被調用時,我做的onDraw()以下,以生成縮略圖:
@Override
protected void onDraw(Canvas canvas) {
<snipped code that draws paths, shapes to canvas>
if (mScaled) {
Bitmap out = Bitmap.createScaledBitmap(mBitmap, (int) thumbWidth, (int) thumbHeight, false);
canvas.drawBitmap(out, null, thumbnailRectF, thumbCanvasPaint);
}
}
縮略圖被顯示在使用thumbCanvasPaint通過thumbnailRectF限定的空間,但在隨後的onDraw()調用中,縮放的位圖具有沒有改變它的原始狀態,即使全尺寸的活動畫布顯示了所有的繪圖等。基於一些測試,在我看來,雖然我設置了初始調用畫圖(mCanvas)的位圖,後續onDraws正在寫入底層位圖,而不是在onSizeChanged()中指定的位圖。
因此,我想我想知道如何將onDraw畫布綁定到位圖,以便讀取執行重新大小,保存等操作。查看this question,我認爲draw(mCanvas) ;調用會將onDraw綁定到mCanvas中指定的位圖(在我的例子中是mBitmap),但實際上,就更新畫布而言,它似乎不起作用。
感謝,
保羅
我可以看到你的解決方案whith這個例子的相似性:http://www.barebonescoder.com/2010/06/android-development-simple-2d-graphics-part-1/ – Lumis 2011-02-08 02:06:00