首页
学习
活动
专区
圈层
工具
发布

【Android UI】Canvas 画布 ⑦ ( Canvas 绘制显示区域 | Canvas 绘制矩形源码分析 )

文章目录 一、Canvas 绘制显示区域 二、Canvas 绘制矩形源码分析 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈...; Canvas 画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘制显示区域 ---- Canvas 绘制时 , 并不是由 Canvas..., 是无法改变的 ; 参考 【Android UI】Canvas 画布 ⑥ ( Canvas 绘图源码分析 | ViewRootImpl#draw 方法源码 | ViewRootImpl#drawSoftware...平移 , 旋转 , 缩放 得来的 ; 调用 Canvas#translate , Canvas#rotate , Canvas#scale 方法 , 可以改变 Canvas 的绘图坐标系 ; Canvas...Canvas 绘图坐标系 , 两个坐标系重合部分 绿色矩形框 就是显示的部分 , 红色矩形框范围绘制的内容不显示在界面中 ; 二、Canvas 绘制矩形源码分析 ---- 调用 Canvas#drawRect

2.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android UI】Canvas 画布 ④ ( Canvas 坐标系 | Canvas 自身坐标系 | Canvas 绘图坐标系 )

    文章目录 一、Canvas 自身坐标系 二、Canvas 绘图坐标系 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas...画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 自身坐标系 ---- Canvas 自身坐标系 , 指的是 自定义组件 View 或...绘图坐标系 ---- Canvas 绘图坐标系 的 坐标原点 位置 , 可以认为是 Paint 画笔开始绘画的位置 ; Canvas 绘图坐标系 不是一成不变的 , 该 坐标系 与 Matrix 矩阵...; Canvas 的 状态栈 , 通过如下函数 , 进行保存和还原 Matrix 矩阵 ; 通过 Canvas#save() 函数 , 保存 Matrix 矩阵的变换操作 ; 通过 Canvas#restore...的 图层栈 , 通过调用 Canvas#saveLayer() 函数 , 创建新的透明图层 , 后续的绘图操作都在该新图层中执行 , 调用 Canvas#restore() 或 Canvas#restoreToCount

    2K20

    【Android UI】Canvas 画布 ③ ( Canvas 图层栈 | Canvas#saveLayer() 新建图层 | Canvas 状态栈保存信息标志位 )

    文章目录 一、Canvas#saveLayer() 新建图层 二、Canvas 状态栈保存信息标志位 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈...又称为 Layer 栈 ; 一、Canvas#saveLayer() 新建图层 ---- Canvas 画布类 , 提供了 Canvas#saveLayer()函数 , 用于 创建 新的图层 ; 在自定义组件的...避免 * 在可能的情况下使用此方法,而不是使用 * {@link android.view.view在视图上查看#LAYER_TYPE_HARDWARE HARDWARE LAYER...restore()时应用于屏幕外 * @return 要传递给restoreToccount()以平衡此save()的值 */ public int saveLayer(@android.annotation.Nullable...RectF bounds, @android.annotation.Nullable Paint paint) { return saveLayer(bounds, paint, ALL_SAVE_FLAG

    1.2K20

    【Android UI】Canvas 画布 ⑤ ( Canvas 坐标系 | Canvas 绘图坐标系变换示例 )

    文章目录 一、Canvas 绘图坐标系变换示例 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas 画布中 ,...有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘图坐标系变换示例 ---- Canvas 绘图坐标系 原始位置如下 , 下面的矩形就是组件本身...; 调用 Canvas#translate() 方法 , 平移后的画布如下 , 蓝色轮廓是平移后的 Canvas 画布 ; 下面的 黑色区域 ( 原本的 Canvas 范围 ) 蓝色区域 ( 平移后的...Canvas 范围 ) 都在 第一图层 中 ; 在上面的基础上 , 调用 Canvas#save 方法 , 保存当前的 Matrix 矩阵信息到状态栈中 ; Layer 栈中只有 第一图层...元素 ; 状态栈 中有量两个元素 , 就是 Canvas 原始的坐标系信息 和 当前平移一次后的坐标信息 ; 再次调用 Canvas#translate 方法 , 再次将 Canvas 画布进行平移 ,

    1.8K10

    【Android UI】Canvas 画布 ⑨ ( Canvas 绘图坐标系平移实例 )

    画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘图坐标系平移实例 ---- 在 Canvas#onDraw 中进行绘制 , Canvas...(); 调用 Canvas#translate 方法 , 将 Canvas 画布进行平移操作 , Canvas 绘图坐标系 由 原来的位置 分别向 X 轴和 Y 轴平移 111 像素 , 平移后 Canvas...与上面的 save 方法对应 canvas.restore(); 二、代码示例 ---- 完整代码如下 : package kim.hsl.android_ui; import android.content.Context...; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import...android.graphics.RectF; import android.util.AttributeSet; import android.view.View; import androidx.annotation.Nullable

    1.3K20

    【Android UI】Canvas 画布 ② ( Canvas 状态栈 | Canvas#restoreToCount 状态栈出栈到指定层级 )

    文章目录 一、Canvas#restoreToCount 状态栈出栈到指定层级 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer...栈 ; 一、Canvas#restoreToCount 状态栈出栈到指定层级 ---- 调用 Canvas#restoreToCount(int saveCount) 方法 , 可以 指定出栈到某层 ;...如下图所示 , 已经调用了 5 次 Canvas#save() 方法 , 如果直接调用 Canvas#restoreToCount(1) , 可以直接回退到 原点坐标 也就是之前调用的 5 次 Canvas...#save() 全部作废 ; 如果直接调用 Canvas#restoreToCount(3) , 那么之前的调用的 2 次 Canvas#save() 作废 , 相当于调用了 3 次 Canvas...() * canvas.restoreToCount(count); * // now the canvas is back in the same state it was

    64110

    017android初级篇之android canvas的使用

    一个Canvas对象有四大基本要素: 一个用来保存像素的Bitmap 一个Canvas在Bitmap上进行绘制操作 绘制的东西 绘制的画笔Paint 如何获得一个Canvas对象。...Canvas对象的获取方式有三种: 我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canvas,效果会直接反应在View中。...Canvas能绘制什么 Canvas类提供了一系列的draw...方法,从这些方法的名字就可以知道Canvas可以绘制的对象。 1....绘制几何图像 canvas.drawArc (扇形) canvas.drawCircle(圆) canvas.drawOval(椭圆) canvas.drawLine(线) canvas.drawPoint...参考链接 Android Canvas API Android 2D Graphics学习(二)、Canvas篇1、Canvas基本使用

    1.7K30

    Android自定义系列——3.Canvas详解

    3.1 Canvas图形绘制 Canvas也称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大,Android Api中Canvas的相关 Api有许多。...3.绘制点 通过Api可以绘制一个点,也可以绘制一组点,具体实现如下: canvas.drawPoint(200, 200, mPaint); //在坐标(200,200)位置绘制一个点 canvas.drawPoints...关于绘制矩形,Canvas提供了三种重载方法,第一种就是提供四个数值(矩形左上角和右下角两个点的坐标)来确定一个矩形进行绘制。...其余两种是先将矩形封装为Rect或RectF(实际上仍然是用两个坐标点来确定的矩形),然后传递给Canvas绘制,方法如下: // 第一种 canvas.drawRect(100,100,800,400....绘制椭圆 // 第一种 RectF rectF = new RectF(100,100,800,400); canvas.drawOval(rectF,mPaint); // 第二种 canvas.drawOval

    1.1K30

    【Android UI】Canvas 画布 ⑧ ( Canvas 绘图坐标系 2x2 矩阵 | Canvas 绘图坐标系 3x3 操作矩阵 )

    文章目录 一、Canvas 绘图坐标系 2x2 矩阵 二、Canvas 绘图坐标系 3x3 操作矩阵 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈...又称为 Layer 栈 ; Canvas 画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘图坐标系 2x2 矩阵 ---- 在 Canvas...绘图坐标系 ; Canvas 绘图坐标系 可以通过调用 Canvas#translate 平移 , Canvas#rotate 旋转 , Canvas#scale 缩放 , Canvas#skew 扭曲斜拉...等方法 进行改变 ; 二、Canvas 绘图坐标系 3x3 操作矩阵 ---- Canvas#translate 平移 , Canvas#rotate 旋转 , Canvas#scale 缩放 , Canvas...#translate 平移 , Canvas#rotate 旋转 , Canvas#scale 缩放 , Canvas#skew 扭曲斜拉 等操作的 3 \times 3 的 Matrix 矩阵

    1.5K20

    【Android UI】Canvas 画布 ⑥ ( Canvas 绘图源码分析 | ViewRootImpl#draw 方法源码 | ViewRootImpl#drawSoftware 方法源码 )

    , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas 画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas...绘图源码分析 ---- 参考 【Android 应用开发】UI绘制流程 ( 生命周期机制 | 布局加载机制 | UI 绘制流程 | 布局测量 | 布局摆放 | 组件绘制 | 瀑布流布局案例 ) 博客..., Android 的 UI 界面绘制流程为 : 布局测量 布局摆放 组件绘制 这里 分析 Android 组件绘制过程中 , Canvas 画布相关操作 ; 在绘制时 , 最终调用的方法是 ViewRootImpl...mFullRedrawNeeded = true; scheduleTraversals(); } } } 源码参考路径 : frameworks/base/core/java/android...unlockCanvasAndPost"); } } return true; } 源码参考路径 : frameworks/base/core/java/android

    75520

    Canvas学习系列一:初识canvas

    1. canvas介绍 Canvas元素的出现,可以说开启的Web世界绘制动画,图形的大门,其功能非常强大 canvas 元素是HTML5中功能最强大的元素,它的能力主要是通过Canvas中的Context...var canvas = getElementById('canvas'); var context = canvas.getContext('2d'); 2. canvas的后备内容 Canvas...元素之间包含的文本,这种文本称为 "后备内容",只有在浏览器不支持canvas元素时才会显示该文本内容 canvas>当前浏览器不支持canvas元素,请更换浏览器canvas> 3....canvas实际上有两套尺寸: 一个是canvas元素的大小,一个是canvas绘图表面的大小。...canvas.width = '600'; //canvas的属性取值为非负整数,所以不能带有px canvas.height = '300'; 4. canvas API canvas

    1.3K30
    领券