標籤:android style blog http io ar color os sp
1.Paint畫筆
Panit(畫筆)是繪圖額輔助類,其類中包含文字和位元影像額樣式、顏色等屬性資訊。Paint 的常用方法如下:
setAntiAlias(boolean aa)
作用:設定畫筆是否無鋸齒
參數:true 表示無鋸齒,false 表示有鋸齒,預設為 false 。
setAlpha(int a)
作用:設定畫筆的透明度
參數:透明值
setTextAlign(Paint.Align align)
作用:設定繪製文本的錨點
參數:Paint.Align 類中的常量
measureText(String text)
作用:擷取常值內容的寬度
參數:常值內容
setStyle(Style style)
作用:設定畫筆樣式
參數:樣式執行個體
setColor(int color)
作用:設定畫筆顏色
參數:色值
setStrokeWidth(float width)
作用:設定畫筆額粗細程度
參數:畫筆粗細值
setTextSize(float textSize)
作用:設定畫筆在繪製文本時,文本字型的尺寸
參數:尺寸值
setARGB(int a,int r,int g,int b)
作用:設定畫筆的ARGB分量
第一個參數:畫筆透明度分量
第二個參數:畫筆紅色分量
第三個參數:畫筆綠色分量
第四個參數:畫筆藍色分量
2.Paint 畫筆執行個體
如下:
步驟:建立項目“PanitProject”,遊戲架構為MySurfaceView 遊戲架構,具體步驟參照“11.遊戲開發基礎(SurfaceView 遊戲架構、View 和 SurfaceView 的區別)”。
主要繪圖方法myDraw()修改如下:
public void myDraw() { try { canvas =sfh.lockCanvas(); if(canvas!=null) { canvas.drawColor(Color.WHITE); //--設定畫筆無鋸齒 Paint paint1 = new Paint(); canvas.drawCircle(40,30,20,paint1); paint1.setAntiAlias(true); canvas.drawCircle(100,30,20,paint1); //--設定畫筆的透明度 canvas.drawText("無透明度",100,70,new Paint()); Paint paint2 = new Paint(); paint2.setAlpha(0x77); canvas.drawText("半透明度",20,70,new Paint()); //--設定繪製文本的錨點 canvas.drawText("錨點",20,90,new Paint()); Paint paint3 = new Paint(); //設定以文本的中心點繪製 paint3.setTextAlign(Paint.Align.CENTER); canvas.drawText("錨點",20,105,paint3); //--擷取文本的長度 Paint paint4 = new Paint(); float len = paint4.measureText("文本寬度:"); canvas.drawText("文本長度:"+len,20,130,new Paint()); //--設定畫筆樣式 canvas.drawRect(new Rect(20,140,40,160),new Paint()); Paint paint5 = new Paint(); //設定畫筆不填充 paint5.setStyle(Paint.Style.STROKE); canvas.drawRect(new Rect(60,140,80,160),paint5); //--設定畫筆顏色 Paint paint6 = new Paint(); paint6.setColor(Color.BLUE); canvas.drawText("藍色",30,180,paint6); //--設定畫筆的粗細程度 canvas.drawLine(20,200,70,200,new Paint()); Paint paint7 = new Paint(); paint7.setStrokeWidth(7); canvas.drawLine(20,220,70,220,paint7); //--設定畫筆繪製文本的字型粗細 Paint paint8 = new Paint(); paint8.setTextSize(20); canvas.drawText("文字尺寸",20,260,paint8); //--設定畫筆的ARGB 分量 Paint paint9 = new Paint(); paint9.setARGB(0x77,0xff,0x00,0x00); canvas.drawText("紅色半透明",20,290,paint9); } } catch(Exception ex){ }finally { if(canvas!=null) { sfh.unlockCanvasAndPost(canvas); } } }
Paint 畫筆類提供了一個消除鋸齒的函數,其實 Canvas 畫布也提供額繪圖消除鋸齒的函數,如下所示:
Canvas.setDrawFilter(DrawFilter filter);
作用:為畫布設定繪圖消除鋸齒
參數:繪圖過濾器執行個體
執行個體化一個DrawFilter 類的對象,代碼如下所示:
PaintFlagsDrawFilter pfd = new PaintFlagsDrawFilter(0,Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
【讀書筆記《Android遊戲編程之從零開始》】13.遊戲開發基礎(Paint 畫筆)