android canvas画布 和 Paint画笔

Paint画笔
Paint paint=new Paint();
1.图形绘制
paint.setAntiAlias(true); //设置画笔为无锯齿 设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。
paint.setColor(Color.BLACK); //设置画笔颜色
paint.setStrokeWidth((float) 3.0); //线宽 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度
paint.setStyle(Style.STROKE); //空心效果 为FILL,FILL_OR_STROKE,或STROKE
setAlpha(int a); //设置绘制图形的透明度。
setDither(boolean dither); //设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰
setFilterBitmap(boolean filter); //如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示速度,本设置项依赖于dither和xfermode的设置
setShader(Shader shader); //设置图像效果,使用Shader可以绘制出各种渐变效果
setShadowLayer(float radius ,float dx,float dy,int color); //在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色
setStrokeCap(Paint.Cap cap); //当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式Cap.ROUND,或方形样式Cap.SQUARE
setStrokeJoin(Paint.Join join); //设置绘制时各图形的结合方式,如平滑效果等
setXfermode(Xfermode xfermode) //设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果

2.文本绘制
setSubpixelText(boolean subpixelText); //设置该项为true,将有助于文本在LCD屏幕上的显示效果
setTextAlign(Paint.Align align); //设置绘制文字的对齐方向
setTextScaleX(float scaleX); //设置绘制文字x轴的缩放比例,可以实现文字的拉伸的效果
setTextSize(float textSize); //设置绘制文字的字号大小
setTextSkewX(float skewX); //设置斜体文字,skewX为倾斜弧度
setTypeface(Typeface typeface); //设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等
setUnderlineText(boolean underlineText); //设置带有下划线的文字效果
setStrikeThruText(boolean strikeThruText); //设置带有删除线的效果

Canvas画布
1、基本的绘制图片方法
drawBitmap(Bitmap bitmap, float left, float top, Paint paint) //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置

2、对图片剪接和限定显示区域
drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint); Rect src: 是对图片进行裁截,若是空null则显示整个图片
RectF dst:是图片在Canvas画布中显示的区域,
大于src则把src的裁截区放大,小于src则把src的裁截区缩小。

public void drawRoundRect (RectF rect, float rx, float ry, Paint paint) //绘制圆角矩形
rect:RectF对象。
rx:x方向上的圆角半径。
ry:y方向上的圆角半径。
paint:绘制时所使用的画笔。

drawRect(RectF rect, Paint paint) //绘制区域,参数一为RectF一个区域

drawPath(Path path, Paint paint) //绘制一个路径,参数一为Path路径对象

drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) //贴图,参数一就是我们常规的Bitmap对象,参数二是源区域(这里是bitmap),参数三是目标区域(应该在canvas的位置和大小),参数四是Paint画刷对象,因为用到了缩放和拉伸的可能,当原始Rect不等于目标Rect时性能将会有大幅损失。

drawLine(float startX, float startY, float stopX, float stopY, Paint paint) //画线,参数一起始点的x轴位置,参数二起始点的y轴位置,参数三终点的x轴水平位置,参数四y轴垂直位置,最后一个参数为Paint 画刷对象。

drawPoint(float x, float y, Paint paint) //画点,参数一水平x轴,参数二垂直y轴,第三个参数为Paint对象。

drawText(String text, float x, floaty, Paint paint) //渲染文本,Canvas类除了上面的还可以描绘文字,参数一是String类型的文本,参数二x轴,参数三y轴,参数四是Paint对象。

drawOval(RectF oval, Paint paint)//画椭圆,参数一是扫描区域,参数二为paint对象;

drawCircle(float cx, float cy, float radius,Paint paint)// 绘制圆,参数一是中心点的x轴,参数二是中心点的y轴,参数三是半径,参数四是paint对象;

drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)//画弧,参数一是RectF对象,一个矩形区域椭圆形的界限用于定义在形状、大小、电弧,参数二是起始角(度)在电弧的开始,参数三扫描角(度)开始顺时针测量的,参数四是如果这是真的话,包括椭圆中心的电弧,并关闭它,如果它是假这将是一个弧线,参数五是Paint对象;

translate(10, 10);//把当前画布的原点移到(10,10),后面的操作都以(10,10)作为参照点,默认原点为(0,0)

Path path = new Path();
public void moveTo(float x, float y) //移动绘制的起点,从点(x,y)点开始进行绘制。

public void lineTo(float x, float y) //连接起始点与点(x,y)的直线,如果没有使用moveTo则起始点默认为(0,0)。

public void rMoveTo(float dx, float dy) //在绘制线的终点的基础上移动(dx,dy)得到新的起始点。

public void rLineTo(float dx, float dy) //与lineTo功能类似,但是是在上个线的终点基础上进行绘制

public void quadTo(float x1, float y1, float x2, float y2) //根据两个控制点绘制贝塞尔曲线。如果没有使用moveTo指定起点,起点默认为(0,0),即(0,0)到(x1,y1)之间绘制贝塞尔曲线,(x1,y1)到(x2,y2)之间绘制贝塞尔曲线。

public void reset(),清空path路径中的信息。

public void addRect(RectF rectf, Direction dir)添加矩形 参数二用来指定添加到path中的模型(比如方形,椭圆)的闭合方向,有两个值CCW 表示逆时针、CW 表示顺时针(Path.Direction.CW)

Rect rect = new Rect(left,top,right,bottom); //绘制距型 用int
RectF rectf = new RectF(left,top,right,bottom) //绘制距型 用float

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值