2012-01-02 90 views
1

我正在繪製一個網格,我希望它大於屏幕大小,以便用戶可以將屏幕左/右/上/下拖動到網格的其餘部分。畫布比屏幕大

這樣做的最好方法是什麼?我已經嘗試在畫布上繪製更大的位圖,但沒有得到任何位置。

protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     Paint paint = new Paint(); 
     paint.setStyle(Paint.Style.FILL); 
     paint.setColor(Color.WHITE); 

     Bitmap testBitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888); 
     canvas.drawBitmap(testBitmap, 0, 0, paint); 

     canvas.drawPaint(paint); 

     //other grid drawing code here 
    } 

回答

1

我在Activity的onTouch方法中使用了View的scrollBy()方法。有效。

0

您可以使用canvas.translate(x,y)方法。這將調整畫布相對於屏幕的原點。所以canvas.translate(10,10)會使畫布原點(0,0)在屏幕上的(10,10)點。使用負面翻譯來滾動屏幕。

+0

這意味着我需要重新繪製當前屏幕上的所有內容,不是嗎? – KcYxA 2012-01-02 22:36:03

+0

不應該,它只是重新定位畫布,繪製在畫布上的所有東西都是相對於畫布位置的,如果它使得畫布重新定位,那麼是的,你必須補償翻譯。 – 2017-05-10 01:13:50