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

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

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

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

1.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

66920

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.1K10

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

75020

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

40610

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.5K30

Android Canvas自定义实现时钟效果

AndroidCanvas自定义画一个时钟,供大家参考,具体内容如下 自定义控件,在安卓是也是一种无所不能的技术了,所有自带控件,以及组合自带控件不能实现的一些效果,我们都可以通过自定义控件来实现,不过...canvas) { super.onDraw(canvas); //首先设置画布为黑色 canvas.drawColor(0xff000000); //获取屏幕的宽,和高的比例,选取最小的比例,这样就能让图片位于中间了...), 500, 500); //绘制时针 canvas.drawPath(hour, paint); //重绘上一次的时钟 canvas.restore(); //设置分针的颜色为红色 paint.setColor...(2); canvas.save(); canvas.rotate(calendar.get(Calendar.SECOND) * 6, 500, 500); //绘制秒针 canvas.drawLine...(500, 330, 500, 510, paint); canvas.restore(); canvas.save(); } /** * 通过Handler更新时钟走向 * @param message

59330

Android Canvas方法总结最全面详解API(小结)

本篇文章主要介绍了Android Canvas方法总结最全面详解API,分享给大家,具体如下: 常用方法 drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前面绘画的图层...canvas.skew(0.2f,-0.8f); Canvas保存和还原 Canvas提供了几个方法,让我们可以方便的对Canvas的状态进行更改和还原。...我们在对Canvas进行平移、旋转、放大等操作时候,可以调用save()方法,将当前修改过的Canvas状态进行保存,调用restore() 方法后,会将Canvas还原成最近的一个save() 的状态...canvas.translate(100,100); // 平移(100,100) int save1 = canvas.save(); // 保存Canvas状态(状态1) canvas.scale...(2, 2); // 放大2倍 int save2 = canvas.save(); // 保存Canvas状态(状态2) canvas.restore(); // 返回最新的save状态,即状态2

95810

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

79430
领券