关于Canvas的一些用法
来源:互联网 发布:centos开机启动命令 编辑:程序博客网 时间:2024/05/21 13:56
关于Canvas
1、如何获得一个Canvas对象。
Canvas对象的获取方式有三种:
第一种:我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们可以通过操作这个Canvas,来改变view效果。
第二种:就是自己创建一个Canvas对象。一个Canvas对象一定是结合一个Bitmap对象的。所以一定要为一个Canvas对象设置一个Bitmap对象。
1. //得到一个Bitmap对象,下面是其中的一种方法
2. Bitmap a = Bitmap.createBitmap(100,100, Bitmap.Config.ARGB_4444);
3. Canvas c = new Canvas(a);
4. /*先new一个Canvas对象,再调用setBitmap方法,一样的效果
5. * Canvas c = new Canvas();
6. * c.setBitmap(a);
7. */
第三种 :是调用SurfaceHolder.lockCanvas(),返回一个Canvas对象。
2、canvas可以绘制的内容
1)填充
drawARGB(int a, int r, int g, int b)
drawColor(int color)
drawRGB(int r, int g, int b)
drawColor(int color, PorterDuff.Mode mode)
2)几何图形
canvas.drawArc (扇形)
canvas.drawCircle(圆)
canvas.drawOval(椭圆)
canvas.drawLine(线)
canvas.drawPoint(点)
canvas.drawRect(矩形)
canvas.drawRoundRect(圆角矩形)
canvas.drawVertices(顶点)
cnavas.drawPath(路径)
3)图片
canvas.drawBitmap (位图) canvas.drawPicture (图片)
4)文本
canvas.drawText
PorterDuff.Mode为枚举类,一共有16个枚举值:
1.PorterDuff.Mode.CLEAR
所绘制不会提交到画布上。
2.PorterDuff.Mode.SRC
显示上层绘制图片
3.PorterDuff.Mode.DST
显示下层绘制图片
4.PorterDuff.Mode.SRC_OVER(上层在上面)
正常绘制显示,上下层绘制叠盖。
5.PorterDuff.Mode.DST_OVER(下层在上面)
上下层都显示。下层居上显示。
6.PorterDuff.Mode.SRC_IN(显示交集的上层)
取两层绘制交集。显示上层。
7.PorterDuff.Mode.DST_IN(显示交集的下层)
取两层绘制交集。显示下层。
8.PorterDuff.Mode.SRC_OUT(显示非交集的上层)
取上层绘制非交集部分。
9.PorterDuff.Mode.DST_OUT(显示非交集的下层)
取下层绘制非交集部分。
10.PorterDuff.Mode.SRC_ATOP(取dst区域,交集部分src在上面)
取下层非交集部分与上层交集部分
11.PorterDuff.Mode.DST_ATOP(取src区域,交集部分dst在上面)
取上层非交集部分与下层交集部分
12.PorterDuff.Mode.XOR(去交集部分)
异或:去除两图层交集部分
13.PorterDuff.Mode.DARKEN(取全部区域、没看出效果来、慎用)
取两图层全部区域,交集部分颜色加深
14.PorterDuff.Mode.LIGHTEN(取全部区域、没看出效果来、慎用)
取两图层全部,点亮交集部分颜色
15.PorterDuff.Mode.MULTIPLY(取交集区域、叠加后交集颜色变化、慎用)
取两图层交集部分叠加后颜色
16.PorterDuff.Mode.SCREEN(取全部区域、叠加后交集颜色变化、慎用)
取两图层全部区域,交集部分变为透明色
- 关于Canvas的一些用法
- 关于Canvas的一些经验
- 关于canvas(html5)的用法
- 关于canvas的重要方法用法总结
- 关于数组的一些用法
- 关于system()的一些用法
- 一些 关于 控件的用法
- 关于CListCtrl的一些用法
- 关于const的一些用法
- 关于struct的一些用法
- 关于AlertDialog 的一些用法
- 关于枚举的一些用法
- 关于Flurry的一些用法
- 关于Datatable的一些用法
- 关于指针的一些用法
- 关于controller的一些用法
- 关于sort的一些用法
- 关于transform的一些用法
- iOS基础:深入理解Objective-c中@class的含义
- sql查询中的null
- Android开发学习之路--Content Provider之初体验
- iOS面试题四
- Android资源文件assets和raw的比较
- 关于Canvas的一些用法
- java.net.ConnectException: failed to connect to /127.0.1.1 (port 8080)的解决办法
- stm32之GPIO的理解
- 帆软报表学习-快速入门
- 框架学习
- mysql 创建用户与授权、修改密码
- 《Go语言编程》中calc修改后可在Windows执行的源码
- Centos7.0 安装VNC后链接出现黑屏
- PHP验证登录用户名和密码