Android 遊戲開發之Canvas畫布

來源:互聯網
上載者:User

得到canvas畫布對象
[java] 
Canvas canvas = getHolder().lockCanvas(); 

畫布的一些屬性和方法以及一些應用
[java] 
if (canvas != null) { 
    //----設定畫布繪圖無鋸齒 
    canvas.setDrawFilter(pfd); 
    //----利用填充畫布,刷屏 
    canvas.drawColor(Color.BLACK); 
    //----繪製文本 
    canvas.drawText("drawText", 10, 10, paint); 
    //----繪製像素點 
    canvas.drawPoint(10, 20, paint); 
    //----繪製多個像素點 
    canvas.drawPoints(new float[] { 10, 30, 30, 30 }, paint); 
    //----繪製直線 
    canvas.drawLine(10, 40, 50, 40, paint); 
    //----繪製多條直線 
    canvas.drawLines(new float[] { 10, 50, 50, 50, 70, 50, 110, 50 }, paint); 
    //----繪製矩形 
    canvas.drawRect(10, 60, 40, 100, paint); 
    //----繪製矩形2 
    Rect rect = new Rect(10, 110, 60, 130); 
    canvas.drawRect(rect, paint); 
    canvas.drawRect(rect, paint); 
    //----繪製圓角矩形 
    RectF rectF = new RectF(10, 140, 60, 170); 
    canvas.drawRoundRect(rectF, 20, 20, paint); 
    //----繪製圓形 
    canvas.drawCircle(20, 200, 20, paint); 
    //----繪製弧形 
    canvas.drawArc(new RectF(150, 20, 200, 70), 0, 230, true, paint); 
    //----繪製橢圓 
    canvas.drawOval(new RectF(150, 80, 180, 100), paint); 
    //----繪製指定路徑圖形 
    Path path = new Path(); 
    //設定路徑起點 
    path.moveTo(160, 150); 
    //路線1 
    path.lineTo(200, 150); 
    //路線2 
    path.lineTo(180, 200); 
    //路徑結束 
    path.close(); 
    canvas.drawPath(path, paint); 
    //----繪製指定路徑圖形 
    Path pathCircle = new Path(); 
    //添加一個圓形的路徑 
    pathCircle.addCircle(130, 260, 20, Path.Direction.CCW); 
    //----繪製帶圓形的路徑文本 
    canvas.drawTextOnPath("PathText", pathCircle, 10, 20, paint); 

 
註:以上代碼參考自《Android遊戲編程之從零開始》

得到自訂圖片寬高的bitmap(參數一:內容物件,參數二:資源ID,參數三:自訂寬度,參數四:自訂高度)
[java] 
public static Bitmap loadBallView(Context context,int resId,int width,int height) { 
         
    Resources resources = context.getResources(); 
         
    Drawable image = resources.getDrawable(resId); 
         
    Bitmap bitmap = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888); 
         
         Canvas canvas = new Canvas(bitmap); 
         image.setBounds(0, 0, width,height); 
         image.draw(canvas); 
         
         return bitmap; 
    } 
 
利用canvas繪製bitmap
[java] 
Bitmap bitmap = loadBallView(context,R.drawable.image,100,100); 
 
Paint paint = new Paint(); 
 
canvas.drawBitmap(bitmap, startX, startY, paint); //參數一:bitmap資源,參數二:起始X座標,參數三:起始Y座標,參數四:畫筆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.