Android绘图Canvas与Paint属性汇总

在我们写自定义控件画比较复杂的图形时,可能会经常出现忘记画布或画笔的某些属性和参数怎么写的情况(至少我是这样…),因此在查询资料后在这里总结一下,以便查阅。

Canvas属性

  • DrawPoint,绘制点
canvas.drawPoint(x,y,paint);
  • DrawLine,绘制直线
canvas.drawLine(startX,startY,endX,endY,paint);
  • DrawLines,绘制多条直线
float[] pts = {
startX1,startY1,endX1,endY1,
......
startXn,startYn,endXn,endYn};

canvas.drawLines(pts,paint);
  • DrawRect,绘制矩形
canvas.drawRect(left,top,right,bottom,paint);
  • DrawRoundRect,绘制圆角矩形
canvas.drawRoundRect(left,top,right,bottom,radiusX,radiusY,paint);
  • DrawCircle,绘制圆
canvas.drawCircle(circleX,circleY,radius,paint);
  • DrawArc,绘制弧形、扇形
paint.setStyle(Paint.Style.STROKE);
canvas.drawArc(left,top,right,bottom,startAngle,sweepAngle,useCenter,paint);

这里需要注意,绘制弧形还是扇形由倒数第二个参数useCenter决定,Boolean类型,如果是true,绘制的是扇形。false则是弧形。画笔的STROKE或者FILL决定绘制的是实心的还是空心的。

  • DrawOval,绘制椭圆
//通过椭圆的外接矩形来绘制椭圆
canvas.drawOval(left,top,right,bottom,paint);
  • DrawText,绘制文本
canvas.drawText(text,startX,startY,paint);
  • DrawPosText,在指定位置绘制文本
//text文本会分开绘制在指定的位置上
canvas.drawPosText(text,new float[]{X1,Y1,X2,Y2,......Xn,Yn},paint);
  • DrawPath,绘制路径
Path path = new Path();
path.moveTo(50,50);
path.lineTo(100,100);
path.lineTo(100,300);
canvas.drawPath(path,paint);

Paint属性

  • SetARGB,设置绘制的颜色,a代表透明度,r,g,b代表颜色值红,绿,蓝
paint.setARGB(int a,int r,int g,int b);
  • SetAlpha,设置绘制图形的透明度
paint.setAlpha(int a);
  • SetColor,设置绘制的颜色,使用颜色值来表示,改颜色值包括透明度和RGB颜色
paint.setColor(int color);
  • SetAntiAlias设置是否使用抗锯齿功能
paint.setAntiAlisa(boolean b);
  • SetDither,设置是否使用图形抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图更加清晰
paint.setDither(boolean b);
  • SetFilterBitmap,如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示速度,本设置项依赖于dither和xgermode的设置
paint.setFilterBitmap(boolean b);
  • SetMaskFilter,设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等
paint.setMaskFilter(MaskFilter maskfilter);
  • SetColorFilter,设置颜色过滤器,可以在绘制颜色时实现不同颜色的变换效果
paint.setColorFilter(ColorFilter colorfilter);
  • SetPathEffect,设置绘制路径的效果,如点画线等
paint.setPathEffect(PathEffect effect);
  • SetShader,设置图像效果,使用Shader可以绘制出各种渐变效果
paint.setShader(Shader shader);
//示例

//线性渐变,该类继承自Shader
LinearGradient mGradient= new LinearGradient(X0, Y0, X1, Y1,
    Color.YELLOW, Color.BLUE, Shader.TileMode.CLAMP);
paint.setShader(mGradient);
  • SetShadowLayer,在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色
paint.setShadowLayer(float radius,float dx,float dy,int color);
  • setStyle,设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE
paint.setStyle(Paint.Style style);
  • setStrokeCap,当画笔样式为STROKE或TILL_OR_STROKE时,设置笔刷的图形样式,如图形样式Cap.ROUND,或方形样式Cap.SQUARE
paint.setStrokeCap(Paint.Cap cap);
  • setStrokeJoin,设置绘制时各图形的组合方式,如平滑效果等
paint.setStrokeJoin(Paint.Join join);
  • setStrokeWidth,当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度
paint.setStrokeWidth(float width);
  • setXfermode,设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果
paint.setXfermode(Xfermode xfermode);
  • setFakeBoldText,模拟实现粗体文字,设置在小字体上效果会非常差
paint.setFakeBoldText(boolean fakeBoldText);
  • setSubpixelText,设置该项为true,将有助于文本在LCD屏幕上的显示效果
paint.setSubpixelText(boolean subpiexlText);
  • setTextAlign,设置绘制文字的对齐方向
paint.setTextAlign(Paint.Align align);
  • setTextScaleX,设置绘制文字x轴的缩放比例,可以实现文字的拉伸的效果
paint.setTextScaleX(float scaleX);
  • setTextSize,设置绘制文字的字号大小
paint.setTextSize(float textSize);
  • setTextSkewX,设置斜体文字,skewX为倾斜弧度
paint.setTextSkewX(float skewX);
  • setTypeface,设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等
paint.setTypeface(Typeface typeface);
  • setUnderlineText,设置带有下划线的文字效果
paint.setUnderlineText(boolean underlineText);
  • setStrikeThruText,设置带有删除线的效果
paint.setStrikeThruText(boolean strikeThruText);

猜你喜欢

转载自blog.csdn.net/wernerzeiss/article/details/79097407
今日推荐