diff --git a/CustomView/Advance/[3]Canvas_Convert.md b/CustomView/Advance/[3]Canvas_Convert.md index 2af7777..4735588 100644 --- a/CustomView/Advance/[3]Canvas_Convert.md +++ b/CustomView/Advance/[3]Canvas_Convert.md @@ -28,17 +28,15 @@ Matrix(矩阵) | getMatrix, setMatrix, concat | 实际上画布的位移,缩 ***** ### 1.画布操作 #### 为什么要有画布操作? -画布操作可以帮助我们用更加容易理解的方式制作图形,如果你之前看过绘制太极和Canvas(1)最后的实例,你就会发现其中就有对translate的运用。 -translate 是干什么用的呢? +画布操作可以帮助我们用更加容易理解的方式制作图形。 -上面表格中写的是"位移",但"位移"的词义很是模糊,到底位移的是什么?那换种说法,translate是坐标系的移动,为图形绘制选择一个合适的坐标系,看下图: +例如: 从坐标原点为起点,绘制一个长度为20dp,与水平线夹角为30度的线段怎么做? -PS:请不要在意坐标系数值和图像的倾斜,制作软件出了一点问题,如果你有比较好的制作数学图形的软件可以推荐一下。 +按照我们通常的想法(*被常年训练出来的数学思维*),就是先使用三角函数计算出线段结束点的坐标,然后调用drawLine即可。 -![](https://github.com/GcsSloop/AndroidNote/blob/master/%E9%97%AE%E9%A2%98/Canvas/Art2/translate.png) +然而这是否是被固有思维禁锢了? -不同的坐标系对于描述一个图形的难度实际上是不同的,就拿上图来说,假设蓝色矩形为屏幕,左侧状态为默认的坐标系,右侧为将坐标原点移动到屏幕中心的坐标系,要在屏幕中心绘制一个圆形,在左侧的坐标系中,你需要计算出圆心的位置和半径,而右侧只需知道半径即可。 合理的使用画布操作可以帮助你用更容易理解的方式创作你想要的效果,这也是画布操作存在的原因。 @@ -46,7 +44,7 @@ translate 是干什么用的呢? ***** #### ⑴位移(translate) - 请注意,位移是基于当前位置移动,而不是每次基于屏幕左上角的(0,0)点移动,如下: + 上面表格中写的是"位移",但"位移"的词义很是模糊,到底位移的是什么?那换种说法,translate是坐标系的移动,为图形绘制选择一个合适的坐标系,请注意,位移是基于当前位置移动,而不是每次基于屏幕左上角的(0,0)点移动,如下: ``` java // 省略了创建画笔的代码