2016年10月18日 星期二

[ Android ] Canvas 畫布

填充
ARGB色 canvas.drawARGB(int a, int r, int g, int b)
RGB色 canvas.drawRGB(int r, int g, int b)
顏色 canvas.drawColor(int color) 
顏色 canvas.drawColor(int color, PorterDuff.Mode mode)

繪制幾何圖像
扇形 canvas.drawArc
圓 canvas.drawCircle
椭圓 canvas.drawOval
線 canvas.drawLine
點 canvas.drawPoint
矩形 canvas.drawRect
圓角矩形 canvas.drawRoundRect
頂點 canvas.drawVertices
路徑 cnavas.drawPath
繪製文本
canvas.drawText(CharSequence text, int start, int end, float x, float y, Paint paint):
繪製文本的指定範圍,由開始/結束指定的,其在(X,Y)的起源,在指定的顏色。
drawText(String text, float x, float y, Paint paint):
繪製文本,與原點(X,Y),使用指定的顏色。
drawText(String text, int start, int end, float x, float y, Paint paint):
繪製文本,與原點(X,Y),使用指定的顏色。
drawText(char[] text, int index, int count, float x, float y, Paint paint):
繪製文本,與原點(X,Y),使用指定的顏色。
drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint):
繪製文本,與原點(X,Y),使用指定的顏色,沿著指定的路徑。
drawTextOnPath(char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint):
繪製文本,與原點(X,Y),使用指定的顏色,沿著指定的路徑。
drawTextRun(char[] text, int index, int count, int contextIndex, int contextCount, float x, float y, boolean isRtl, Paint paint):
繪製文本運行,都在一個單一的方向,與複雜的文本整形可選的上下文。
drawTextRun(CharSequence text, int start, int end, int contextStart, int contextEnd, float x, float y, boolean isRtl, Paint paint):
繪製文本運行,都在一個單一的方向,與複雜的文本整形可選的上下文。
常用的字型
常規字型 Typeface.DEFAULT
黑體字型 Typeface.DEFAULT_BOLD
寬字體 Typeface.MONOSPACE
sans serif字體 Typeface.SANS_SERIF
粗體 Typeface.BOLD
粗斜體 Typeface.BOLD_ITALIC
斜體 Typeface.ITALIC
常規 Typeface.NORMAL 

用法
Canvas canvas;// 畫布
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
…(註:此為SurfaceView用法)
@Override
public void surfaceCreated(SurfaceHolder holder) {
  canvas = holder.lockCanvas(new Rect(0,0,myWidth,myHeight));
  // 1.鎖住畫布
  canvas.drawBitmap(bitmap, x, y, null);
  // 2.在畫布上貼圖
  holder.unlockCanvasAndPost(canvas);
  // 3.解鎖並PO出畫布
}

沒有留言:

張貼留言

影片的問題請留在影片的留言區裡。
部落格不會另外通知給我,所以很難發現你有留言。