Paint 画笔
Paint是canvas里面最重要的参数,没有之一,canvas除非是利用图片绘制,否则都需要画笔这个参数,并且是@NOTNULL的限制,利用这个画笔,你才能绘制出你想要的东西
setMaskFilter(MaskFilter maskfilter);
设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等
setShader(Shader shader);
设置图像效果,使用Shader可以绘制出各种渐变效果
setShadowLayer(float radius ,float dx,float dy,int color);
在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色
setColorFilter(ColorFilter colorfilter);
设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果
setStyle(Paint.Style style);
设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE
setStrokeCap(Paint.Cap cap);
当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式 Cap.ROUND,或方形样式Cap.SQUARE
setSrokeJoin(Paint.Join join);
设置绘制时各图形的结合方式,如平滑效果等
setStrokeWidth(float width);
当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度
setXfermode(Xfermode xfermode);
设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果
setUnderlineText(boolean underlineText);
设置带有下划线的文字效果
setStrikeThruText(boolean strikeThruText);
设置带有删除线的效果
注意: new Paint(Paint.ANTI_ALIAS_FLAG) 可以直接去除锯齿 其实是用的flag字段表示的
RectF Rect
Rect 就是标识一块地方 大小是right-left bootom-top这么大只不过这里是int值的
RectF值跟Rect差不多 只不过是float值
你会发现Canvas里面只要有方法是用Rect的基本上都有同名方法用RectF的
Path
path在我的理解中 其实是一个路径,你可以使用patH显示moveto某个坐标,然后lineto另外一个坐标,最后用closed来连接最后一个和第一个坐标形成一个图型,如果不closed可以在lineto起始坐标其实是一样的
Shader
使用Shader可以做出渐变色的效果
MaskFilter
Canvas
Canvas是画布,提供了各种绘画的方法,在画布(View)上绘制你想要的图像,这里只是绘制。在这之前已经执行了onMeasure和onLayout方法你已经知道自己的view的大小和位置了,所以可以根据自己的要求绘制在你的view的任何地方。
Canvas里的draw方法大都是native的方法
drawCircle
drawCircle(float cx, float cy, float radius, Paint paint)
cx和cy分别是此view相对于自己左上角的距离
radius是半径,如果你的半径特别大,超出了范围,那么他不会管你而是按照你的设定继续绘制,当然 你可能显示不完整
drawRect
drawRect(float left, float top, float right, float bottom, Paint paint)
left和top分别是此view相对于自己左上角的距离
大小是right-left bootom-top这么大
drawOval
drawOval(RectF oval, Paint paint)
其实是在指定区域里面绘制一个圆形 如果这个区域是正方形 那这个就是圆形 如果这个区域是长方形 那么这就是一个椭圆