Android使用Paint 和 Canvas 的相关知识,自定义 View 实现一系列效果动画

  • Post author:
  • Post category:其他



*


* setSrokeJoin(Paint.Join join);


* 设置绘制时各图形的结合方式,如平滑效果等


*


* setStrokeWidth(float width);


* 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度


*


* setXfermode(Xfermode xfermode);


* 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果


*


* 2.文本绘制


* setFakeBoldText(boolean fakeBoldText);


* 模拟实现粗体文字,设置在小字体上效果会非常差


*


* 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);


* 设置带有删除线的效果


剩余的有些方法在这次的验证中暂时没用到 具体可以参考

PS:谢谢大佬的总结嗷

[Paint画笔的常用设置,高级方法使用](()

[](()1.2 Canvas基本介绍



canvas又是啥呢?


Canvas我们可以简单理解为画布或是ps里面的图层,是绘制图形的直接对象,控制着图形的形状,比如矩形、圆形等。我们在自定义View时,通过调用Canvas的API来绘制具体的图形。



[](()



[](()2.1 Canvas的常用操作速查表

| 操作类型 | 相关API | 备注 |

| :– | :– | :– |

| 绘制颜色 | drawColor, drawRGB, drawARGB | 使用单一颜色填充整个画布 |

| 绘制基本形状 | drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, drawArc | 依次为 点、线、矩形、圆角矩形、椭圆、圆、圆弧 |

| 绘制图片 | drawBitmap, drawPicture | 绘制位图和图片 |

| 绘制文本 | drawText, drawPosText, drawTextOnPath | 依次为 绘制文字、绘制文字时指定每个文字位置、根据路径绘制文字 |

| 绘制路径 | drawPath | 绘制路径,绘制贝塞尔曲线时也需要用到该函数 |

| 顶点操作 | drawVertices, drawBitmapMesh | 通过对顶点操作可以使图像形变,drawVertices直接对画布作用、 drawBitmapMesh只对绘制的Bitmap作用 |

| 画布剪裁 | clipPath, clipRect | 设置画布的显示区域 |

| 画布快照 | save, restore, saveLayerXxx, restoreToCount, getSaveCount | 依次为 保存当前状态、 回滚到上一次保存的状态、 保存图层状态、 回滚到指定状态、 获取保存次数 |

| 画布变换 | translate, scale, rotate, skew | 依次为 位移、缩放、 旋转、倾斜 |

| Matrix(矩阵) | getMatrix, setMatrix, concat | 实际上画布的位移,缩放等操作的都是图像矩阵Matrix, 只不过Matrix比较难以理解和使用,故封装了一些常用的方法。 |


  • canvas.drawArc ();画扇形


  • canvas.drawCircle();画圆


  • canvas.drawOval()࿱



版权声明:本文为m0_67598977原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。