標籤:android canvas
protected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);//構造兩個畫筆,一個紅色,一個綠色Paint paint_green = generatePaint(Color.GREEN, Style.STROKE, 3);Paint paint_red = generatePaint(Color.RED, Style.STROKE, 3);//構造一個矩形Rect rect1 = new Rect(0,0,400,220);//在平移畫布前用綠色畫下邊框canvas.drawRect(rect1, paint_green);//平移畫布後,再用紅色邊框重新畫下這個矩形canvas.translate(100, 100);canvas.drawRect(rect1, paint_red);}private Paint generatePaint(int color,Paint.Style style,int width){Paint paint = new Paint();paint.setColor(color);paint.setStyle(style);paint.setStrokeWidth(width);return paint;}
程式碼分析:
這段代碼中,對於同一個矩形,在平移畫布前利用綠色畫下矩形邊框,在平移後,再用紅色畫下矩形邊框。大家是不是會覺得這兩個邊框會重合?實際結果是這樣的。
前後調用的是一個canvas對象,但是,這個對象並不是直接被圖形賦值,這個對象實際上是生出用來畫圖的“圖層”,但其本身不是,每次調用draw等函數,便完成了一個圖層,所以儘管調用的是canvas同一個對象,實際上調用的是不同的圖層
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
android canvas探究