android遊戲開發中圖形繪製:Canvas和Paint的使用

來源:互聯網
上載者:User

標籤: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的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.