cavas方法汇总
2019-03-24 本文已影响1人
next_discover
paint:
setcolor
setstyle
setstroke
setstokewith
cavas:
drawcolor//画布背景
drawARGB
drawRGB
drawLine//画线
drawLines//画多条线
drawPoint//画点
drawPoints//多个点
drawRect//画矩形
drawRoundRect//画圆角矩形
drawCircle//画圆
drawOval//画椭圆
drawArc//画圆弧
//画路径
drawPath(path,paint)
Rect RectF矩形
contains//判断是否包含某个点在内
//判断代码块设置矩形的不同颜色
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setAntiAlias(true);//抗锯齿
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
RectF rectf_round = new RectF(500,400,1000,700);
if(rectf_round.contains(eventX,eventY)){
paint.setColor(Color.RED);
}else{
paint.setColor(Color.GREEN);
}
canvas.drawRoundRect(rectf_round,50,50,paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
eventX = event.getX();
eventY = event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN){
invalidate();
return true;
}else if(event.getAction() == MotionEvent.ACTION_UP){
eventX = -1;
eventY = -1;
}
postInvalidate();
return super.onTouchEvent(event);
}
intersects//判断两个矩形是否相交(不会返回相交部分的矩形)
intersect //判断两个矩形是否相交并且还会返回相交部分的矩形
union//合并矩形 rectf_1.union(rectf_2); canvas.drawRect(rectf_1,paint);
注意:invalidate();运行在主线程,postInvalidate();运行在任何线程
path
//画直线
moveTo //直线路径
lineTo //第一段的终点,第二段的起点
colse()//闭环
//画弧线
path.arcTo()
addArc()//增加弧度路径
addRect//增加矩形路径
addRoundRect//增加圆弧矩形路径
addcircle //添加圆形路径
setFillType //设置填充模式
Path.Direction.CCW //逆时针方向的矩形路径
Path.Direction.CW //顺时针方向的矩形路径
//path的填充模式
FillType.Winding: 默认值,当两个图形相交时,取相交部分显示
FillType.eve_odd: 取path所在并不相交的区域
FillType.inverse_winding: 取path的外部区域
FillType.inverse_even_odd: 取path的外部和相交区域
reset //重置路径
rewind //会清除FillType及所有路径,但是二者也有区别
reset()//会重置所有,但是不会清除FillType