1 | (一)获取Canvas第一种在所有View的onDraw(Canvas canvas)方法中直接获取
第二种直接new一个Canvas
第三种调用SurfaceHolder.lockCanvas(),返回一个Canvas对象 (二)常用API//获取画布宽高 |
2 | canvas.getHeight(); |
3 | canvas.getWidth(); |
4 |
5 | //获取Canvas画布像素密度 |
6 | canvas.getDensity(); |
7 |
8 | //获取画布过滤器 |
9 | canvas.getDrawFilter(); |
1 | //设置Canvas的Matrix矩阵 |
2 | public void concat(Matrix matrix) |
1 | //clip相关的方法主要是对画布Canvas进行裁剪 |
2 | canvas.clipPath(path_STROKE); |
3 | canvas.clipPath(path_STROKE, op); |
4 | canvas.clipRect(rect); |
5 | canvas.clipRect(rect, op); |
6 | canvas.clipRect(left, top, right, bottom); |
7 | canvas.clipRect(left, top, right, bottom, op); |
8 | canvas.clipRegion(region); |
9 | canvas.clipRegion(region, op); |
1 | //给Canvas画布填充颜色 |
2 | canvas.drawARGB(a, r, g, b); |
3 | canvas.drawColor(color); |
4 | canvas.drawColor(color, mode); |
01 | //通过不同参数在Canvas上画位图 |
02 | canvas.drawBitmap(bitmap, left, top, paint_STROKE); |
03 | canvas.drawBitmap(bitmap, matrix, paint_STROKE); |
04 | canvas.drawBitmap(bitmap, src, dst, paint_STROKE); |
05 | canvas.drawBitmap(bitmap, src, dst, paint_STROKE); |
06 | canvas.drawBitmap(colors, offset, stride, x, y, width, height, hasAlpha, paint_STROKE); |
07 | canvas.drawBitmapMesh(bitmap, meshWidth, meshHeight, verts, vertOffset, colors, colorOffset, paint_STROKE); |
08 |
09 | //通过不同的参数在Canvas上画图片 |
10 | canvas.drawPicture(picture); |
11 | canvas.drawPicture(picture, dst); |
12 | canvas.drawPicture(picture, dst); |
1 | //在Canvas上画圆和椭圆 |
2 | canvas.drawCircle(cx, cy, radius, paint_STROKE); |
3 |
4 | //扇形 |
5 | canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint_STROKE); |
6 |
7 | //椭圆 |
8 | canvas.drawOval(oval, paint_STROKE); |
1 | //在Canvas上画线 |
2 | canvas.drawLine(startX, startY, stopX, stopY, paint_STROKE); |
3 | canvas.drawLines(pts, paint_STROKE); |
4 | canvas.drawLines(pts, offset, count, paint_STROKE); |
1 | //在Canvas画布上画点 |
2 | canvas.drawPoint(x, y, paint_STROKE); |
3 | canvas.drawPoints(pts, paint_STROKE); |
4 | canvas.drawPoints(pts, offset, count, paint_STROKE); |
1 | //在Canvas画布上画矩形或圆角矩形 |
2 | canvas.drawRect(r, paint_STROKE); |
3 | canvas.drawRect(rect, paint_STROKE); |
4 | canvas.drawRoundRect(rect, rx, ry, paint_STROKE); |
01 | //利用Canvas在画布上写文字相关Api |
02 | canvas.drawPosText(text, pos, paint_STROKE); |
03 | canvas.drawPosText(text, index, count, pos, paint_STROKE); |
04 |
05 | canvas.drawText(text, x, y, paint_STROKE); |
06 | canvas.drawText(text, index, count, x, y, paint_STROKE); |
07 | canvas.drawText(text, start, end, x, y, paint_STROKE); |
08 | canvas.drawText(text, start, end, x, y, paint_STROKE); |
09 |
10 | canvas.drawTextOnPath(text, path_STROKE, hOffset, vOffset, paint_STROKE); |
11 | canvas.drawTextOnPath(text, index, count, path_STROKE, hOffset, vOffset, paint_STROKE); |
1 | //绘制顶点(指多边形) |
2 | canvas.drawVertices(mode, vertexCount, verts, vertOffset, texs, texOffset, colors, colorOffset, indices, indexOffset, indexCount, paint_STROKE); |
01 | |
02 | //给Canvas设置一个bitmap画布 |
03 | canvas.setBitmap(bitmap); |
04 | |
05 | //获取画布宽高 |
06 | canvas.getHeight(); |
07 | canvas.getWidth(); |
08 |
09 | //获取和设置Canvas画布像素密度 |
10 | canvas.getDensity(); |
11 | canvas.setDensity(density); |
12 |
13 | //获取和设置画布过滤器 |
14 | canvas.getDrawFilter(); |
15 | canvas.setDrawFilter(filter); |
16 |
17 | //获取Canvas上截取的矩形 |
18 | canvas.getClipBounds(); |
19 | canvas.getClipBounds(bounds); |
20 |
21 |
22 | //获取Canvas的矩阵 |
23 | canvas.getMatrix(); |
24 | canvas.getMatrix(ctm); |
25 | canvas.setMatrix(matrix); |
26 |
27 | //返回此位图绘制画布上允许的最大高度和宽度。试图用一个位图画比这个值高会导致错误。 |
28 | canvas.getMaximumBitmapHeight(); |
29 | canvas.getMaximumBitmapWidth(); |
30 |
31 | //返回画布上的私有堆栈状态的矩阵或截图。 |
32 | canvas.getSaveCount(); |
33 |
34 | //判断此画布使用硬件加速 |
35 | canvas.isHardwareAccelerated(); |
36 |
37 | //如果当前层引入装置是不透明的返回true |
38 | canvas.isOpaque(); |
39 |
40 | //暂时没有用过,不知道怎么用 |
41 | canvas.quickReject(path_STROKE, type); |
42 | canvas.quickReject(rect, type); |
43 | canvas.quickReject(left, top, right, bottom, type); |
01 | //返回调用save()之前状态,是用来清除所有修改矩阵或裁剪自上次保存状态 |
02 | canvas.restore(); |
03 | canvas.restoreToCount(saveCount); |
04 |
05 | //保存当前画布状态,之后的的 translate,scale,rotate,skew,concat or clipRect,clipPath等都会照常运行 |
06 | //但调用restore()后,会回复到save之前的Canvas状态 |
07 | canvas.save(); |
08 | canvas.save(saveFlags); |
09 |
10 | //和save()类似,在现在的层上新建一层,调用restore后回复原状态 |
11 | canvas.saveLayer(bounds, paint_STROKE, saveFlags); |
12 | canvas.saveLayer(left, top, right, bottom, paint_STROKE, saveFlags); |
13 | canvas.saveLayerAlpha(bounds, alpha, saveFlags); |
14 | canvas.saveLayerAlpha(left, top, right, bottom, alpha, saveFlags); |
01 | //让画布扭曲 |
02 | canvas.skew(sx, sy); |
03 |
04 | //让画布旋转 |
05 | canvas.rotate(degrees); |
06 | canvas.rotate(degrees, px, py); |
07 |
08 | //让画布缩放 |
09 | canvas.scale(sx, sy); |
10 | canvas.scale(sx, sy, px, py); |
11 |
12 | //让画布翻转 |
13 | canvas.translate(dx, dy); |