标签:
setStyle
paint.setStyle(Style.FILL)
方法可以给paint设置绘制风格,有FILL,FILL_AND_STROKE,STROKE,这3种绘制风格,每种有所不同。
上图的3个圆,分别是FILL,FILL_AND_STROKE,STROKE风格绘制的。
setShadowLayer
setShadowLayer (float radius, float dx, float dy, int color)
可以设置阴影,参数的意义:
radius:模糊度
dx:水平位移
dy:垂直位移
看下图:
上面的radius是20,下面是2.可以看出,radius越大越模糊,越小越清晰,但是如果radius设置为0,则阴影消失不见。
这里的阴影是绘制在文字下方,文字的阴影支持硬件加速,而其他图形,如圆形等,也可以支持阴影,但是必须使用软件加速。效果如下。
直线
drawLine (float startX, float startY, float stopX, float stopY, Paint paint)
可以用来绘制直线。
startX:开始点X坐标
startY:开始点Y坐标
stopX:结束点X坐标
stopY:结束点Y坐标
参数和方法比较简单,这里不做演示图。
多条直线
void drawLines (float[] pts, Paint paint)
void drawLines (float[] pts, int offset, int count, Paint paint)
上述两个方法可以绘制多条直线,pts是x,y坐标的数组,值得注意的是如果这里的坐标是(x1,y1,x2,y2,x3,y3,x4,y4)那么绘制的直线将是点(x1,y1),(x2,y2)的连线以及(x3,y3),(x4,y4)的连线,总共两条连线。
所以绘制的是每两个点的连线,并不是所有点连接
这里还有offset参数,以及count,意义是偏移多少个点(两个数值),绘制多少个点。\
单个点以及多个点
void drawPoint (float x, float y, Paint paint)
该方法绘制一个点。
void drawPoints (float[] pts, Paint paint)
void drawPoints (float[] pts, int offset, int count, Paint paint)
以上方法绘制多个点。使用和上面的绘制多个线条类似。这里不再赘述。
矩形
void drawRect (float left, float top, float right, float bottom, Paint paint)
void drawRect (RectF rect, Paint paint)
void drawRect (Rect r, Paint paint)
以上三个方法都可以绘制矩形。
圆角矩形
void drawRoundRect (RectF rect, float rx, float ry, Paint paint)
其中rx代表圆角椭圆的x半径,ry代表圆角矩形的y半径
圆形
void drawCircle (float cx, float cy, float radius, Paint paint)
绘制圆形,cx,cy分别代表圆心的x,y坐标,radius代表了半径。
椭圆
void drawOval (RectF oval, Paint paint)
绘制椭圆,这里绘制椭圆没有要圆心和半径等,而是提供一个矩形,绘制出一个内切于该矩形的椭圆。
圆弧
void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
方法如上,从绘制椭圆的方法中看出,绘制椭圆要的是一个矩形,而绘制圆弧同样也是要一个矩形。
startAngle:开始的角度
sweepAngle:圆弧扫过的角度
userCenter:是否绘制出圆弧的两条边
RectF rectF = new RectF(100, 500, 900, 900);
canvas.drawArc(rectF, 0, -60, false, mPaint);
-60代表圆弧从逆时针方向扫过。
以上效果中,paint指定的style是stroke,如果将style指定为fill,那么将会有如下效果。
代码如下
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(10);
RectF rectF = new RectF(100, 500, 900, 900);
canvas.drawArc(rectF, 0, -60, false, mPaint);
RectF rectF2 = new RectF(100, 800, 900, 1200);
canvas.drawArc(rectF2, 0, -60, true, mPaint);
使用了userCneter参数以后,画笔Fill状态下,会将弧形到矩形中心连接,并填充。
标签:
原文地址:http://blog.csdn.net/cquwentao/article/details/51363346