Canvas Bitmap Paint 学习总结

版权声明:转载请注明出处。作者:两仪织,博客地址:http://blog.csdn.net/u013894427 https://blog.csdn.net/u013894427/article/details/88062293

Android开发者文档中关于绘图的描述

The Canvas class holds the “draw” calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).
翻译如下
在Android中如果想完成画的操作,你需要4个组件,一个Bitmap来存储像素,一个Canvas用来调用draw函数,一个作画的图元(Primitive)(比如Rect,Path,text,Bitmap)和一个用来描述作画颜色和风格的Paint.

这篇只是包含了总体的,会用到的内容,不涉及具体的细节.

Canvas

相关类

  • RectF,参数是float类型的矩形
  • Rect,参数是int类型矩形
  • Region.Op,作用是裁剪过程中的参数,一般用于两个形状之间的共同部分等,类似于PorterDuffXfermode
  • Matirx 矩阵,canvas在进行一些涉及到坐标系的操作的时候,就会利用到Matrix的坐标系,具体来说,那些改变的实质方法就是坐标系的改变,画布中的实际内容没有发生改变
  • ColorSpace,设置颜色空间,比如rgb,srbg,DCI_P3

函数种类

  • clip类函数,作用是裁剪画布的某一个区域,但是实际上相关的Bitmap还是那么大的,如果想让裁剪后的大小改变,可以用Bitmap.createBitmap方法来进行裁剪
  • draw函数,根据提供的参数和画笔绘制图形
  • 旋转(rotate),平移(translate),缩放(scale),错切(skew,参数是区域角度的变化,如果不设置,就相当于正无穷)
  • save,restore,配对使用,save函数首先记录画布当前的状态,然后进行旋转,平移,缩放,错切等操作,这个过程中遵循的是新的坐标系操作完成后调用restore函数恢复状态,restore函数不能比save函数多,否则会报错
  • isOpaque(不透明)
  • setColor,设置颜色,包括透明的
  • quickReject函数可以用来判断UI是否在某一个图层中,经常用来判断是否可见,减少绘制,从而提升性能问题(OverDraw).相同功能的还有clipReject函数

Paint

相关类:

Xfermode, 子类PorterDuffXfermode可以用来画图遮掩,类似于shader,但是功能更多
FontMetrics 设置文字相关的属性,包含ascent,bottom,descent,leading,top
Shader 子类BitmapShader可以用来给Bitmap设置背景,然后在上面图层

  • Paint默认为实心,如果想设置空心,调用paint.setStyle(Paint.Style.STROKE);

设置属性

  • setColor 设置画笔颜色,可以设置为透明
  • setAntiAlias 设置抗锯齿特性
  • setShader 在某一个区域设置背景
  • breakText 用于截断长文字
  • setStyle 设置填充属性,如果不设置,默认是填满

控制

  • reset 复位Paint到默认的内容
  • clearShadowLayer 清除图层
  • set 复制一个已经存在的画笔

Bitmap

创建方法

  • createBitmap方法,根据不同的参数可以获取不同的效果,比如截取老的bitmap的一部分生成新的bitmap
  • copy函数获得一个相同的
  • extractAlpha 把原图的rgb值设置为0,只提出alpha也就是轮廓,可以用来作边缘光晕效果.
  • BitmapFactory.decode()可以把其他类型的对象转换为bitmap

设置项和功能

  • eraseColor填充颜色
  • compress把当前Bitmap的压缩版本输入到流中
  • 其他设置项

猜你喜欢

转载自blog.csdn.net/u013894427/article/details/88062293
今日推荐