Canvas和其绘制目标小结
来源:互联网 发布:英雄无敌5mac作弊 编辑:程序博客网 时间:2024/06/05 18:30
Canvas是一个绘制的工具,分为硬件Canvas和软件Canvas,通过使用Canvas的方法可以将点(图形)绘制到指定目标中(即通常所说的画布,canvas中持有画布的引用),绘制目标有几种,待会介绍。
Canvas的绘制指令:这些最常用的指令由一系列名为drawXXX()的方法提供。它们用来实现实际的绘制行为,例如绘制点、线、面,文字。
Canvas的辅助指令:与绘制指令的区别是,执行辅助指令后产生的变化会对绘制产生持续的影响,直到使用canvas.restore()或canvas.restoreToCount()恢复到执行该辅助指令前的状态(所以若在之后需要恢复到当前节点,需要使用int count = canvas.save())。如坐标变换,裁剪区域。而变换是基于原来的变换基础上变换的,所以变换效果是叠加的,如果一直没有restore的话。
绘制目标:就是要绘制的数据保存的地方。对软件Canvas来说,其绘制目标是建立在Surface之上的bitmap(即在Surface的内存中创建一个bitmap)。对于硬件Canvas来说,绘制目标有两种,一种是HardwareLayer,另一种是DisplayList。Hardwarelayer是一个硬件加速下的Bitmap。而DisplayList,与Bitmap和HardwareLayer不同,它不是一块Buffer,而是指令序列,大概就是根据Canvas的各种辅助指令和绘制指令序列通过某个过程优化保存到DisplayList中(因为特定的指令序列应该是可以优化成更好的指令序列的),而不是在调用Canvas的绘制指令就绘制到内存中直接作为图片数据,这就是硬件Canvas和软件Canvas最大的区别,还有一个区别就是每个子控件都有一个DisplayList,每个ViewGroup也有一个DisplayList,ViewGroup的所有子控件的DisplayList会绘制到其父控件的DisplayList上。所以对于DisplayList来说,它的最大优势在要复制或者增加重复利用率的时候,不重复利用的这个DisplayList的话其实过程比软件绘图更复杂,也更耗资源。
- Canvas和其绘制目标小结
- Canvas和Drawable 绘制组件
- Canvas绘制线段和圆
- 使用HTML5 Canvas绘制一个太极,并令其转动
- 目标检测和跟踪小结
- canvas绘制
- Canvas绘制
- Android Canvas and Drawables (android 图形绘制 canvas 和 Drawables)
- Canvas类和Paint的绘制机器人
- android canvas绘制折线图和柱状图
- 利用canvas绘制矩形和圆形
- 用canvas绘制星星和月亮
- canvas之三:绘制弧和圆
- Android Canvas绘制正多边形和正多角星
- Canvas学习:绘制虚线和圆点线
- Canvas学习:绘制圆和圆弧
- CANVAS绘制虚线和圆点虚线
- android使用camera和matrix,canvas小结
- 不一样的倒计时View
- Day7、ListView和适配器Adapter二
- 解决——》SQL Server(MSSQLSERVER) 请求失败或服务未及时响应,有关详细信息,请参见事件日志或其他的适用的错误日志。
- WIFI模块ESP8266的使用指南(客户端和服务器两种模式建立)
- ODI 11g更换jdk版本方法
- Canvas和其绘制目标小结
- 训练集(train set) 验证集(validation set) 测试集(test set)
- MySQL将查询结果插入到数据表中
- Vue--过滤器
- 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
- javaScript——数组
- 【windows内核驱动开发】文件系统微过滤驱动Minifilter——绑定指定的卷(磁盘分区)
- linux内核编译详细步骤
- GEM5集成NVMain