標籤:android遊戲 canvas paint
android遊戲開發中,使用android.graphics中的類來繪製2D向量圖和文字。
一 畫布Canvas
在Android中的繪圖應該繼承View組件,並重寫它的onDraw(Canvas canvas)方法。
Canvas代表指定View上的畫布,常用方法
二 畫刷Paint
Paint代表Canvas上的畫刷,主要用於繪製風格,包括畫刷顏色、畫刷筆觸粗細、填充風格等。
大體上可以分為兩類,一類與圖形繪製相關,一類與文本繪製相關。
常用方法
三 路徑Path
Path表示在Canvas上繪製的路徑,可以是任意多條直線串連而成的任意圖形。
四 樣本
protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 把整張畫布繪製成白色 canvas.drawColor(Color.WHITE); // 建立一個畫刷 Paint paint = new Paint(); // 設定畫刷屬性 paint.setAntiAlias(true);// 去鋸齒 paint.setColor(Color.RED);// 設定畫刷顏色為紅色 paint.setStyle(Paint.Style.STROKE);// 設定畫刷樣式為空白心 paint.setStrokeWidth(3);// 設定paint的外框寬度 // 畫一個空心圓形 canvas.drawCircle(40, 40, 30, paint); // 畫一個空心正方形 canvas.drawRect(10, 90, 70, 150, paint); // 畫一個空心長方形canvas.drawRect(10, 170, 70,200, paint); // 畫一個空心橢圓形 RectF re=new RectF(10,220,70,250); canvas.drawOval(re, paint); // 畫一個空心三角形 Path path=new Path();path.moveTo(10, 330);path.lineTo(70,330);path.lineTo(40,270);path.close();canvas.drawPath(path, paint);// 畫一個空心梯形Path path1=new Path();path1.moveTo(10, 410);path1.lineTo(70,410);path1.lineTo(55,350);path1.lineTo(25, 350);path1.close();canvas.drawPath(path1, paint); // 修改畫刷屬性 paint.setStyle(Paint.Style.FILL);// 設定畫刷樣式為實心paint.setColor(Color.BLUE);// 設定畫刷顏色// 畫一個實心圓canvas.drawCircle(120,40,30, paint);// 畫一個實心正方形canvas.drawRect(90, 90, 150, 150, paint);// 畫一個實心長方形canvas.drawRect(90, 170, 150,200, paint);// 畫一個實心橢圓RectF re2=new RectF(90,220,150,250);canvas.drawOval(re2, paint);// 畫一個實心三角形Path path2=new Path();path2.moveTo(90, 330);path2.lineTo(150,330);path2.lineTo(120,270);path2.close();canvas.drawPath(path2, paint);// 畫一個實心梯形Path path3=new Path();path3.moveTo(90, 410);path3.lineTo(150,410);path3.lineTo(135,350);path3.lineTo(105, 350);path3.close();canvas.drawPath(path3, paint);// 設定漸層色Shader mShader=new LinearGradient(0,0,100,100, new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW}, null,Shader.TileMode.REPEAT);paint.setShader(mShader);// 畫一個漸層色圓canvas.drawCircle(200,40,30, paint);// 畫一個漸層色正方形canvas.drawRect(170, 90, 230, 150, paint);// 畫一個漸層色長方形canvas.drawRect(170, 170, 230,200, paint);// 畫一個漸層色橢圓RectF re3=new RectF(170,220,230,250);canvas.drawOval(re3, paint);// 畫一個漸層色三角形Path path4=new Path();path4.moveTo(170,330);path4.lineTo(230,330);path4.lineTo(200,270);path4.close();canvas.drawPath(path4, paint);// 畫一個漸層色梯形Path path5=new Path();path5.moveTo(170, 410);path5.lineTo(230,410);path5.lineTo(215,350);path5.lineTo(185, 350);path5.close();canvas.drawPath(path5, paint);// 繪製文字paint.setTextSize(24);// 設定字型大小canvas.drawText(getResources().getString(R.string.str_text1), 240, 50, paint);canvas.drawText(getResources().getString(R.string.str_text2), 240, 120, paint);canvas.drawText(getResources().getString(R.string.str_text3), 240, 190, paint);canvas.drawText(getResources().getString(R.string.str_text4), 240, 250, paint);canvas.drawText(getResources().getString(R.string.str_text5), 240, 320, paint);canvas.drawText(getResources().getString(R.string.str_text6), 240, 390, paint); }
四
參考文章:
http://www.cnblogs.com/stulife/archive/2010/08/19/1803313.html
http://www.cnblogs.com/-oyk/archive/2011/10/25/2223624.html
http://blog.csdn.net/u010142437/article/details/9200465
android遊戲開發中圖形繪製:Canvas和Paint的使用