├── _config.yml
├── .idea
├── .gitignore
├── vcs.xml
├── encodings.xml
├── modules.xml
└── misc.xml
├── images
├── arch.png
├── bomb.png
├── camp.png
├── sky.png
├── tree.png
├── QQGroup.jpg
├── bucket.png
├── canyon.png
├── cloth.png
├── grass.png
├── grass2.png
├── redball.png
├── smalltree.png
├── waterfall.png
├── countrypath.jpg
├── curved-road.png
├── grand-canyon.png
├── log-crossing.png
├── lonelybeach.png
├── tree-twotrunks.png
└── running-sprite-sheet.png
├── CanvasStudy.iml
├── Unit2
├── Arc.html
├── PathSubpath.html
├── Shadow.html
├── ContextExtends.html
├── DottedLine.html
├── Rectangle.html
├── LineCap.html
├── Gradient.html
├── ColorAndOpaque.html
├── AntLine.html
├── ArcTo.html
├── QuadraticCurveTick.html
├── LineJoin.html
├── Eraser.html
├── Line.html
├── CutoutCircle.html
├── PathStrokeFill.html
├── Pattern.html
├── TextScaleRotate.html
├── PolygonSimple.html
├── GridBackground.html
├── QuadraticCurveTriangle.html
├── MoveRect.html
├── BezierCurve.html
├── PictureSynthesis.html
├── CutoutShape.html
├── Axis.html
├── AxisScale.html
├── AxisRotate.html
├── AxisTranslate.html
├── AxisMirro.html
├── DragCircle.html
├── DragLine.html
├── Dashboard.html
├── RadiusShape.html
├── PolygonDraw.html
└── EditableBezierCurves.html
├── Unit1
├── Listener
│ ├── Mouse.html
│ └── SpriteSheets.html
├── MathBase.html
├── CanvasAPI
│ ├── ToBlob.html
│ └── toDataURL
│ │ ├── QualityTest.html
│ │ └── ToDataUrl.html
├── CanvasSize.html
├── CanvasSizeNotCSS.html
├── saveAndRestore.html
├── Clock.html
├── ClockReturnImage2.html
├── ClockReturnImage.html
├── BouncingBalls.html
└── RubberBands.html
├── LICENSE
├── Unit4
├── DrawImage.html
├── CanvasDrawEachOther.html
└── ScalingImage.html
├── Unit3
├── MeasureText.html
├── TextFont.html
├── TextGradientsAndPatterns.html
├── TextAlignAndTextBaseline.html
├── TextStrokeFillShadow.html
├── CircleText.html
└── AxisWithText.html
└── README.md
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /workspace.xml
--------------------------------------------------------------------------------
/images/arch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/arch.png
--------------------------------------------------------------------------------
/images/bomb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/bomb.png
--------------------------------------------------------------------------------
/images/camp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/camp.png
--------------------------------------------------------------------------------
/images/sky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/sky.png
--------------------------------------------------------------------------------
/images/tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/tree.png
--------------------------------------------------------------------------------
/images/QQGroup.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/QQGroup.jpg
--------------------------------------------------------------------------------
/images/bucket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/bucket.png
--------------------------------------------------------------------------------
/images/canyon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/canyon.png
--------------------------------------------------------------------------------
/images/cloth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/cloth.png
--------------------------------------------------------------------------------
/images/grass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/grass.png
--------------------------------------------------------------------------------
/images/grass2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/grass2.png
--------------------------------------------------------------------------------
/images/redball.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/redball.png
--------------------------------------------------------------------------------
/images/smalltree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/smalltree.png
--------------------------------------------------------------------------------
/images/waterfall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/waterfall.png
--------------------------------------------------------------------------------
/images/countrypath.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/countrypath.jpg
--------------------------------------------------------------------------------
/images/curved-road.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/curved-road.png
--------------------------------------------------------------------------------
/images/grand-canyon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/grand-canyon.png
--------------------------------------------------------------------------------
/images/log-crossing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/log-crossing.png
--------------------------------------------------------------------------------
/images/lonelybeach.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/lonelybeach.png
--------------------------------------------------------------------------------
/images/tree-twotrunks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/tree-twotrunks.png
--------------------------------------------------------------------------------
/images/running-sprite-sheet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/827652549/CanvasStudy/HEAD/images/running-sprite-sheet.png
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
这是用三条二次方贝塞尔曲线构成的复选框标记对号
9 | 10 | 11 | 12 | 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 苏一恒 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Unit2/LineJoin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |width展示的是在Canvas画布上的字符串'Hello'的宽度
32 | 33 | 46 | 47 | -------------------------------------------------------------------------------- /Unit2/Line.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |设置canvas的宽高的时候,不要通过CSS来设置width和height,因为CSS只能设置Canvas的元素本身大小,不能设置元素绘图表面(drawing surface)的大小 27 | 点击查看对比 28 |
29 | 30 | 47 | -------------------------------------------------------------------------------- /Unit1/CanvasSizeNotCSS.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |为什么会放大?
28 |其实,当用属性设置宽高时,会同时设置canvas容器和绘图表面的大小,但是如果通过css设置宽高,只修改了canvas容器的大小,而绘图表面的大小并没有改变,导致浏览器会对绘图表面进行缩放,使其符合元素的大小。
29 | 30 | 47 | -------------------------------------------------------------------------------- /Unit1/CanvasAPI/toDataURL/QualityTest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |点击不同的按钮查看不同的重复演示
19 |试试选择不同的边数
11 | 12 | 21 | 22 | 95 | 96 | -------------------------------------------------------------------------------- /Unit2/GridBackground.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |欢迎来到我的Canvas教程,在这里你可以学到关于Canvas更加详细的应用,充分了解Canvas的特性,希望得到您的支持。
36 |我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。 37 | 教程介绍、教程目录等能在README里查阅。 38 | 传送门:https://github.com/827652549/CanvasStudy 39 |
40 |欢迎来到我的Canvas教程,在这里你可以学到关于Canvas更加详细的应用,充分了解Canvas的特性,希望得到您的支持。
42 |我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。 43 | 教程介绍、教程目录等能在README里查阅。 44 | 传送门:https://github.com/827652549/CanvasStudy 45 |
46 | 47 | 48 | 100 | -------------------------------------------------------------------------------- /Unit2/QuadraticCurveTriangle.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |拖拽方块并实时重绘
17 | 18 | 109 | -------------------------------------------------------------------------------- /Unit2/BezierCurve.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |加载一个图片,移动鼠标,获取基于canvas鼠标处精灵表坐标
30 | 31 | 32 | 148 | -------------------------------------------------------------------------------- /Unit2/Axis.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |直接右键可以导出img变化的canvas
25 | 26 | 27 |点击按钮,canvas和img的相互转化,通过右键查看不同效果
11 |拖拽鼠标拉取橡皮筋,选中区域并放大
43 | 44 | 203 | -------------------------------------------------------------------------------- /Unit3/CircleText.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 |画圆:设置笔触颜色,是否添加辅助线,是否填充内部空间,然后再画布上绘画。如有需要,使用"清除画布"按钮
52 | 53 | 282 | -------------------------------------------------------------------------------- /Unit2/DragLine.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |设置笔触颜色,是否添加辅助线,是否使用矩形选框,然后再画布上绘画。如有需要,使用"清除画布"按钮
52 | 53 | 283 | 284 | -------------------------------------------------------------------------------- /Unit2/Dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |带刻度的仪表盘
25 | 26 | 277 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CanvasStudy 2 | 3 | 4 | ## 关于Canvas(About Canvas) 5 | 6 | Canvas API 提供了一个通过JavaScript和HTML的<canvas>元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。 7 | 8 | Canvas API主要聚焦于2D图形。而同样使用<canvas>元素的 WebGL API 则用于绘制硬件加速的2D和3D图形。 9 | 10 | Canvas可操作的层面是像素级别的,你觉得还有什么它做不到吗? 11 | 12 | ## 介绍(Introduce) 13 | 本教程是一套详细介绍Canvas的系列学习教程同时也是查阅工具,以实例为主,采用由泛到精的学习结构,所有的小节都有单独的教程页面和HTML文件。 14 | 15 | **如果你想直接开始学习,请直接下拉到[目录区](#contents)。** 16 | 17 | **注意:该教程并未完结,以下是正式版的README说明。** 18 | 19 | 现在,所有教程的讲解均在CSDN博客里书写,以Github Pages在线演示(你可能需要翻墙)。 20 | 21 | 未来,会将所有的教程搬运到一个专门的网站供访问和探讨。 22 | ## 适用人群(For people) 23 | - 如果你是想**系统性地学习Canvas**,那么该教程适合你,它拥有全套的Canvas细节介绍。 24 | - 如果你想要**进一步Canvas某一个特性**,那么此教程适合你,它涵盖了Canvas所有的特性。 25 | - 如果你在**开发Canvas中遇到了某个bug**,那么此教程适合你,它针对于每个特性都有相应的在线示例。 26 | 27 | ## 预备知识(Knowledge) 28 | 你最好能熟练运用HTML、JavaScript与CSS技术,举例来说,假设你已经知道如何使用JavaScript语言的原型继承实现一个对象。 29 | 30 | 另外也需要你具备一些基本的数学知识,注如基本的代数运算、三角函数、向量数学以及计量单位的换算。在第一章的末尾,你能找到涵盖上述基础数学知识的讲解。 31 | 32 | 当然,如果你保持一颗积极向上的心,你也可以边学习Canvas边补充你的预备知识技能。因为,这并不难,不是吗? 33 | 34 | ## 创作背景(Creative Background) 35 | 在浏览了国内主要的Canvas系列讲解后,发现对于Canvas的教程是不健全的,除此之外,那些更适合作为一个查阅工具,而不是适合系统学习。为了让更多的人学习和使用Canvas,我决定出一篇Canvas教程当作自己的处女座,写作的过程中会有不成熟的地方,希望能得到大家的指正和批评。 36 | 37 | 我以《HTML5 Canvas核心技术(图形、动画与游戏开发)》机械工业出版社 为Canvas系列教程的核心参考资料,另外在某些书中没有说明白的,再引用其他平台如MDN来补充和总结。 38 | 39 | 在这里感谢David Geary创作这本书,感谢爱飞翔翻译。 40 | 41 | 为了让所有人都能理解,我尽量精简我的语言和措辞,在阅读完第一章之后,我发现其实这本书还是有很多可以精简和“通俗化”的语句的,于是我就直接总结到我的教程之中。 42 | 43 | 目前本仓库仍在更新中,相应的Demo演示直接打开对应html文件即可。 44 | 45 | 每个文件都在我都CSDN博客专栏中对应都有教程文章 46 | [Canvas系列教程 47 | ](https://blog.csdn.net/huoyihengyuan/article/category/9294371)。 48 | 49 | 在之后都更新中,会将所有的演示Demo的在线链接和说明都贴到README中方便大家使用。 50 | 51 | ## 教程目录(Contents) 52 | - 如果你打算系统性学习Canvas,推荐您按照顺序学习,在一定程度上能够节省您的时间。 53 | - 如果你是要了解某个特性或定位BUG,直接找到对应教程,进入链接查看详细说明和示例。 54 | 55 | ### 第一章·基础知识 56 | 57 | 1. [两套width和height](https://blog.csdn.net/HuoYiHengYuan/article/details/98768351) 58 | 2. [canvas转图片](https://blog.csdn.net/HuoYiHengYuan/article/details/99671708) 59 | 3. [toBlob()转Blob](https://blog.csdn.net/HuoYiHengYuan/article/details/99674215) 60 | 4. [绘图环境](https://blog.csdn.net/HuoYiHengYuan/article/details/99690179) 61 | 5. [状态的保存和恢复](https://blog.csdn.net/HuoYiHengYuan/article/details/99710761) 62 | 6. [支持IE6、IE7、IE8](https://blog.csdn.net/HuoYiHengYuan/article/details/99710962) 63 | 7. [【项目】Canvas时钟](https://blog.csdn.net/HuoYiHengYuan/article/details/99713943) 64 | 8. [鼠标事件](https://blog.csdn.net/HuoYiHengYuan/article/details/99819255) 65 | 9. [canvas.width和context.canvas.width](https://blog.csdn.net/HuoYiHengYuan/article/details/99836728) 66 | 10. [【项目】精灵表坐标查看器](https://blog.csdn.net/HuoYiHengYuan/article/details/99855314) 67 | 11. [键盘事件](https://blog.csdn.net/HuoYiHengYuan/article/details/99864431) 68 | 12. [绘制表面的保存与恢复](https://blog.csdn.net/HuoYiHengYuan/article/details/99887366) 69 | 13. [【项目】100个弹射小球](https://blog.csdn.net/HuoYiHengYuan/article/details/100005577) 70 | 14. [【项目】橡皮筋选框局部放大器](https://blog.csdn.net/HuoYiHengYuan/article/details/100012229) 71 | 15. [打印Canvas的内容](https://blog.csdn.net/HuoYiHengYuan/article/details/100017900) 72 | 16. [数学知识:代数方程、三角函数、向量运算](https://blog.csdn.net/HuoYiHengYuan/article/details/100045570) 73 | 17. [第一章-章末小结](https://blog.csdn.net/HuoYiHengYuan/article/details/100048001) 74 | 75 | ### 第二章·绘制 76 | 77 | 1. [Canvas绘制模型:canvas的浏览器渲染过程原理](https://blog.csdn.net/HuoYiHengYuan/article/details/100051229) 78 | 2. [矩形的绘制](https://blog.csdn.net/HuoYiHengYuan/article/details/100060912) 79 | 3. [颜色与透明度](https://blog.csdn.net/HuoYiHengYuan/article/details/100080538) 80 | 4. [渐变色和图案](https://blog.csdn.net/HuoYiHengYuan/article/details/100083546) 81 | 5. [阴影](https://blog.csdn.net/HuoYiHengYuan/article/details/100093188) 82 | 6. [路径(path)、描边(stroke)与填充(fill)详细介绍](https://blog.csdn.net/HuoYiHengYuan/article/details/100097238) 83 | 7. [剪纸效果/镂空效果](https://blog.csdn.net/HuoYiHengYuan/article/details/100127744) 84 | 8. [线段、网格、像素边界](https://blog.csdn.net/HuoYiHengYuan/article/details/100133611) 85 | 9. [坐标轴的绘制(带刻度线)](https://blog.csdn.net/HuoYiHengYuan/article/details/100152080) 86 | 10. [【项目】画板——直线和矩形选区的实现](https://blog.csdn.net/HuoYiHengYuan/article/details/100179518) 87 | 11. [虚线和蚂蚁线](https://blog.csdn.net/HuoYiHengYuan/article/details/100188987) 88 | 12. [CanvasRenderingContext2D扩展新方法和新属性](https://blog.csdn.net/HuoYiHengYuan/article/details/100190323) 89 | 13. [线段端点和连接点](https://blog.csdn.net/HuoYiHengYuan/article/details/100377904) 90 | 14. [圆和圆弧](https://blog.csdn.net/HuoYiHengYuan/article/details/100516741) 91 | 15. [【项目】画板——圆的实现](https://blog.csdn.net/HuoYiHengYuan/article/details/100529003) 92 | 16. [【项目】数字刻度仪表盘](https://blog.csdn.net/HuoYiHengYuan/article/details/100547808) 93 | 17. [【项目】网格线背景(可作为HTML模版来用)](https://blog.csdn.net/HuoYiHengYuan/article/details/100556626) 94 | 18. [二次方贝塞尔曲线(复选框对勾和圆角三角形)](https://blog.csdn.net/HuoYiHengYuan/article/details/100679648) 95 | 19. [三次方贝塞尔曲线](https://blog.csdn.net/HuoYiHengYuan/article/details/100713817) 96 | 20. [多边形(三角形、矩形、五边形、六边形……)](https://blog.csdn.net/HuoYiHengYuan/article/details/100748594) 97 | 21. [【项目】画板——多边形的实现](https://blog.csdn.net/HuoYiHengYuan/article/details/100788013) 98 | 22. [isPointInPath()判断在路径内。(实现拖拽小方块)](https://blog.csdn.net/HuoYiHengYuan/article/details/100836422) 99 | 23. [【项目】画板——可编辑贝塞尔曲线](https://blog.csdn.net/HuoYiHengYuan/article/details/100862959) 100 | 24. [坐标轴的平移(translate)、缩放(scale)、旋转(totate)、镜像](https://blog.csdn.net/HuoYiHengYuan/article/details/100907020) 101 | 25. [【项目】画板——交互式旋转多边形](https://blog.csdn.net/HuoYiHengYuan/article/details/100972961) 102 | 26. [自定义坐标变换,transform()和setTransform()](https://blog.csdn.net/HuoYiHengYuan/article/details/101023950) 103 | 27. [图像合成,globalCompositeOperation属性](https://blog.csdn.net/HuoYiHengYuan/article/details/101056448) 104 | 28. [【项目】鼠标控制文字旋转缩放](https://blog.csdn.net/HuoYiHengYuan/article/details/101397222) 105 | 29. [剪辑区域,使用clip()实现橡皮擦](https://blog.csdn.net/HuoYiHengYuan/article/details/101467804) 106 | 30. [【项目】画板——橡皮擦工具](https://blog.csdn.net/HuoYiHengYuan/article/details/101478536) 107 | 31. [任意圆角多边形](https://blog.csdn.net/HuoYiHengYuan/article/details/105701602) 108 | 32. [第二章-章末小结](https://blog.csdn.net/HuoYiHengYuan/article/details/101480019) 109 | 110 | ### 第三章·文本 111 | 112 | 1. [文本描边(strokeText)、填充(fillText)、阴影效果](https://blog.csdn.net/HuoYiHengYuan/article/details/101599016) 113 | 2. [渐变文本、图案文本](https://blog.csdn.net/HuoYiHengYuan/article/details/101652385) 114 | 3. [font及相关属性(font-style、font-variant、font-weight、font-size、line-height、font-family)](https://blog.csdn.net/HuoYiHengYuan/article/details/101677114) 115 | 4. [font的水平对齐textAlign和垂直对齐textBaseline](https://blog.csdn.net/HuoYiHengYuan/article/details/102459134) 116 | 5. [文本宽度的度量measureText()](https://blog.csdn.net/HuoYiHengYuan/article/details/102498121) 117 | 6. [【项目】给坐标轴添加数字标签](https://blog.csdn.net/HuoYiHengYuan/article/details/102695375) 118 | 7. [【项目】环形文字](https://blog.csdn.net/HuoYiHengYuan/article/details/102721153) 119 | 8. [第三章-章末小结](https://blog.csdn.net/HuoYiHengYuan/article/details/102756052) 120 | 121 | ### 第四章·图像与视频 122 | 123 | 1. [将图像和视频帧绘制到canvas中](https://blog.csdn.net/HuoYiHengYuan/article/details/102779152) 124 | 2. [图片缩放到canvas大小](https://blog.csdn.net/HuoYiHengYuan/article/details/102797954) 125 | 126 | ## 另外(Additional) 127 | 128 | 在教程之中,我省略了一部分方法的参数介绍,因为你能很容易在网上找到更权威的参数说明,便不再过多解释。 129 | 130 | **更新顺序会按照章节顺序更新,更新仍在继续,请保持关注和支持**。 131 | 132 | ## 联系(Contact) 133 | **欢迎联系我提建议。** 134 | - 作者:苏一恒 135 | - Email:827652549@qq.com 136 | - QQ:827652549 137 | - QQ群:865327862,在这里我们共同探讨关于Canvas的有趣技术、感谢支持。 138 |
拖动贝塞尔曲线的锚点和控制点以改变曲线的形状
68 | 69 |当你完成曲线形状的编辑后,点击曲线外的一点,以完成此图像
70 | 71 | 72 | 74 |