首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

文章目录 一、Canvas 绘图坐标系平移实例 二、代码示例 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas...(r, paint); 绘制完毕后 , 调用 Canvas#save 方法 , 保存当前的 绘图坐标系数据 到状态栈中 , // 将当前坐标保存到 状态栈 中 canvas.save...与上面的 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...paint.setColor(Color.BLUE); // 绘制矩形 canvas.drawRect(r, paint); // 将当前坐标保存

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

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

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

1.2K10

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

文章目录 一、Canvas 自身坐标系 二、Canvas 绘图坐标系 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas...绘图坐标系 ---- Canvas 绘图坐标系 的 坐标原点 位置 , 可以认为是 Paint 画笔开始绘画的位置 ; Canvas 绘图坐标系 不是一成不变的 , 该 坐标系 与 Matrix 矩阵...Canvas#scale() : 缩放画布 Canvas#skew() : 扭曲画布 上述 Matrix 矩阵的变化是不可逆的 , 因此这里需要保存 Matrix 矩阵变化前后的状态 , 状态栈 就是用于保存这种变化的数据结构...; Canvas 的 状态栈 , 通过如下函数 , 进行保存和还原 Matrix 矩阵 ; 通过 Canvas#save() 函数 , 保存 Matrix 矩阵的变换操作 ; 通过 Canvas#restore...函数 保存 Matrix 矩阵变化操作 , 调用 Canvas#restore() 函数 还原 Matrix 矩阵变化操作 ; 状态栈 保存的信息如下 : Matrix 矩阵 Layer 图层 Canvas

1.2K20

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

文章目录 一、Canvas#saveLayer() 新建图层 二、Canvas 状态栈保存信息标志位 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈...onDraw() 方法中 , 调用 Canvas#saveLayer() 函数 新建图层 完成后 , 后续绘图都是在 新建的图层 中绘制的 , 之前已经绘制的内容不会受到影响 ; 新建图层 只负责将当前图层区域绘制..., 不会干扰其他图层的绘制 ; Canvas#saveLayer() 函数 相当于创建了一个透明图层 , 之后的绘图操作 , 都在透明图层中执行的 ; Layer 图层 其在底层也是 由 状态栈 进行保存的...); } 二、Canvas 状态栈保存信息标志位 ---- Canvas#saveLayer() 函数 , 还有一个 3 个参数的多态方法 , 第三个参数就是 状态栈 保存形式 状态位 ; MATRIX_SAVE_FLAG...; FULL_COLOR_LAYER_SAVE_FLAG 状态位 : 保存完整的颜色信息 ; ALL_SAVE_FLAG 状态位 : 保存所有信息 ; Canvas 中有如下默认注解 , 该标志位默认为

68420

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

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

1.2K20

利用Canvas进行网上绘图

2 了解canvas 2.1 基本绘制步骤 (1)创建画布 通过使用H5中的标签来新建一块画布,里面的需要指定一个id属性,width和height指定画布的宽度和大小。...图 2.1.1 描边和填充 在canvas中还有一个相当于橡皮擦的方法,使用它可以清除矩形内绘制的内容。 ?...图 2.1.2 清除矩形 2.2 绘制圆形 canvas中使用arc()方法来绘制弧形和圆形。...图 2.2.1 绘制弧形和圆形 2.3 绘制图片 canvas中的绘制图片其实就是把一幅图放在画布上。 ?...图 2.4.1 绘制渐变 3 总结 Canvas通过代码的方式进行绘图,虽然看似简单,但是想要画出更好,更精美的图像,还需要我们仔细斟酌,计划好每一步,才能发挥出其强大的功能。

2K10

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

文章目录 一、Canvas 绘图源码分析 二、ViewRootImpl#draw 方法源码 三、ViewRootImpl#drawSoftware 方法源码 Canvas 状态保存机制 中 , 存在两个栈结构..., 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas 画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas...绘图源码分析 ---- 参考 【Android 应用开发】UI绘制流程 ( 生命周期机制 | 布局加载机制 | UI 绘制流程 | 布局测量 | 布局摆放 | 组件绘制 | 瀑布流布局案例 ) 博客..., Android 的 UI 界面绘制流程为 : 布局测量 布局摆放 组件绘制 这里 分析 Android 组件绘制过程中 , Canvas 画布相关操作 ; 在绘制时 , 最终调用的方法是 ViewRootImpl...#draw 方法 , 在该方法中 Surface surface 是最终绘制的面板 , Surface surface = mSurface; 绘图时 , 首先要确认绘制区域 , 下面的代码就是 在 手机界面

49020

Python使用matplotlib库绘图保存

matplotlib就是一个好用且常用的绘图库,如果没有安装的可以用pip安装一下: $ pip install matplotlib 安装好后就可以使用了。...,plot就是绘图函数,参数包含了横坐标、纵坐标、绘制内容(bo表示蓝点,r表示红线,这个可以在Matplotlib 用户指南查看)、标签名(这个标签名就可以被图例使用了)。...代码中既保存了图像,也做了显示。因为如果在服务器训练时想要绘图的话,很可能没法直接看,那就要保存然后再查看了。 这里尤其要注意的是,想要成功保存的话,一定要把保存语句写在show语句之前!!!...否则你保存下来的将是一个新的空白图。 绘制的结果如下图所示: 绘图结果 从图中就可以很直观地感受到在训练70轮左右的时候就到达准确率的最高点了,在78%左右。...如果想要保存两张图的话,同样记得要在figure和show之前保存。 ----

81610

Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )

文章目录 一、文本边界坐标解析 二、绘图位置 一、文本边界坐标解析 ---- 在上一篇博客 【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐...31 , right = 28 , bottom = 0 ; 上述坐标是相对于 下图中的 (0, 0) 原点坐标系的值 ; 下图中的原点位置 , 就是调用 Canvas 的 drawText 方法 ,...传入的 x 值和 基线值 ; 下图中的 绿色矩形框是 Canvas绘图区域 , 橙色矩形框是 Canvas 绘制的文本的实际区域 ; 绘图区域 包含 文本实际占用区域 ; 上述的坐标值 , 是在如下坐标系的值...绘图区域 最左侧 距离 文本实际区域 的右侧这段空隙的宽度 ; 可以得到 文本区域 的中心值 , 距离 绘图区域 的值为 \rm \cfrac{left + right}{2} ; top 值是...---- 使用 Canvas 的 drawText 方法绘制文字 , 传入 ( x , y ) 坐标 , x 是绘制区域的左侧 , y 是文本基线 , 绘制的位置如下 : 如果不是要求很精确的话 ,

1.9K10
领券