2012-01-02 89 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