2012-08-07 114 views
7

我想繪製一個位圖繪製的畫布。我可以縮放畫布,但在其上繪製的位圖分別向右下方的左上角移動。縮放畫布和保持中心

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.translate(mPosX, mPosY); 
    canvas.scale(mScaleFactor, mScaleFactor); 

    //draw bitmap 
} 

在過去的幾天裏,我嘗試了許多不同的方法,從操縱平移座標到縮放樞軸點。但沒有任何工作適合我。我很確定我的問題必須有一個簡單的解決方案。

在此先感謝

+0

您想要如何縮放位圖?這意味着什麼:「但是它上面繪製的位圖分別移動到右下方的左上角。」 – you786 2012-08-07 21:29:34

+0

可以說我在屏幕中央有一個紅色圓圈。如果我放大,我想在屏幕中心有一個更大的紅色圓圈。現在我得到一個更大的紅色圓圈,位於屏幕的右下角 – 2012-08-07 21:37:24

回答

13

就像你提到的,支點就是做這種正確的方法:

canvas.scale(2,2, redCircle.x, redCircle.y); 

會工作。沒有必要額外翻譯。

+0

紅色圓圈只是一個例子。實際上,畫布上繪製了許多不同的位圖。我想放大屏幕中心的最新動態。 – 2012-08-07 22:31:08

+0

然後你的支點應該是你屏幕的中心。如果您已經嘗試過,那麼您必須一直使用不正確的centerX和centerY值。 – you786 2012-08-07 22:40:05

+0

好的。現在我可以放大到屏幕的中心。但現在畫布上的滾動非常慢'canvas.scale(mScaleFactor,mScaleFactor,getWidth()/ 2,getHeight()/ 2); \t \t \t canvas.translate(mPosX,mPosY);' – 2012-08-07 23:00:39