复杂的内容都是有简单的线条结合而成的,想要绘制出复杂好看的内容先从画直线开始

canvas绘制直线先认识几个函数

beginPath();开始一条路径,或重置当前的路径

moveTo(x,y);用于规定直线的起点坐标

lineTo(x,y);用于规定直线的终点坐标

closePath();方法创建从当前点到开始点的路径

stroke();方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色

利用上面的函数就可以简单的画出直线了

代码

当前浏览器不支持canvas,请更换浏览器再试

canvas.width= 1024;//设置canvas宽高canvas.height= 768;var context = canvas.getContext("2d");

context.beginPath();

context.moveTo(100, 100);

context.lineTo(700, 700);

context.closePath();

context.stroke();

}

接下来个直线添加点样式:

lineWidth;属性设置或返回当前线条的宽度,以像素计

strokeStyle;属性设置或返回用于笔触的颜色、渐变或模式

fillStyle;属性设置或返回用于填充绘画的颜色、渐变或模式

fill();方法填充当前的图像(路径)。默认颜色是黑色

JavaScript代码如下:

当前浏览器不支持canvas,请更换浏览器再试

canvas.width= 1024;//设置canvas宽高canvas.height= 768;var context = canvas.getContext("2d");

context.beginPath();

context.moveTo(100, 100);

context.lineTo(700, 700);

context.closePath();

context.lineWidth= 5;

context.strokeStyle= "red";

context.stroke();

}

会绘制直线后我们接着来绘制一些图像,要绘制图像也是使用lineTo(x,y),绘制三角形,代码如下

当前浏览器不支持canvas,请更换浏览器再试

canvas.width= 1024;//设置canvas宽高canvas.height= 768;var context = canvas.getContext("2d");

context.beginPath();

context.moveTo(100, 100);

context.lineTo(700, 700);

context.lineTo(100, 700);

context.lineTo(100, 100);

context.closePath();

context.lineWidth= 5;

context.strokeStyle= "red";

context.stroke();

}

这个时候在是实现一些复杂的图像,七巧板:

canvas绘制七巧板

当前浏览器不支持Canvas,请更换浏览器再试

var tangram =[

{p: [{x:0,y: 0}, {x: 800,y: 0}, {x: 400,y: 400}],color: "#caff76"},

{p: [{x:0,y: 0}, {x: 400,y: 400}, {x: 0,y: 800}],color: "#67becf"},

{p: [{x:800,y: 0}, {x: 800,y: 400}, {x: 600,y: 600}, {x: 600,y: 200}],color: "#ef3d61"},

{p: [{x:600,y: 200}, {x: 600,y: 600}, {x: 400,y: 400}],color: "#f9f51a"},

{p: [{x:400,y: 400}, {x: 600,y: 600}, {x: 400,y: 800}, {x: 200,y: 600}],color: "#a594c0"},

{p: [{x:200,y: 600}, {x: 400,y: 800}, {x: 0,y: 800}],color: "#fa8ecc"},

{p: [{x:800,y: 400}, {x: 800,y: 800}, {x: 400,y: 800}],color: "#f6ca29"},

];

window.οnlοad= function() {var canvas = document.getElementById("canvas");

canvas.width= 800;

canvas.height= 800;var context = canvas.getContext("2d");for(var i = 0; i < tangram.length; i++) {

draw(tangram[i], context)

}

}functiondraw(plece, cxt) {

cxt.beginPath();

cxt.moveTo(plece.p[0].x, plece.p[0].y);for(var i = 1; i < plece.p.length; i++) {

cxt.lineTo(plece.p[i].x, plece.p[i].y);

}

cxt.closePath();

cxt.fillStyle=plece.color;

cxt.fill();

cxt.strokeStyle= "black";

cxt.lineWidth= 3;

cxt.stroke();

}

python七巧板三角形_canvas基础入门(二)绘制线条、三角形、七巧板相关推荐

  1. Python pyglet 自制3D引擎入门(二) -- 绘制立体心形,动画和相机控制

    Python作为目前较广泛的编程语言, 用于制作3D游戏可谓得心应手.本文讲解使用Python pyglet库自制简易3D引擎的方法技巧. 上篇:Python pyglet 自制3D引擎入门(一) – ...

  2. Python pyglet 自制3D引擎入门(一) -- 绘制几何体、创建3D场景

    Python作为目前较广泛的编程语言, 用于制作3D游戏可谓得心应手.本文讲解应用Python pyglet库绘制3D场景的入门知识. 下篇:Python pyglet 自制3D引擎入门(二) – 绘 ...

  3. 有关我零基础入门Opengl并想开发七巧板小程序交作业这档子事

    有关我零基础入门Opengl并想开发七巧板小程序交作业这档子事 隔壁笔记链接:入手OpenGL 隔壁技术实现链接:部分思路实现 背景故事 c++课程老师给布置作业,"小作业",使用 ...

  4. 【OpenGL ES】入门及绘制一个三角形

    本文首发于个人博客:Lam's Blog - [OpenGL ES]入门及绘制一个三角形,文章由MarkDown语法编写,可能不同平台渲染效果不一,如果有存在排版错误图片无法显示等问题,烦请移至个人博 ...

  5. 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python就业前景广阔.很多 ...

  6. Python数据分析——NumPy数值计算基础(二)

    Python数据分析--NumPy数值计算基础(二) 思维导图: 数据的csv文件存取 csv(Comma-Separated Value,逗号分隔值)文件:是一种常见的文件格式,用来存储批量数据. ...

  7. 美女讲师教你学Python第一季:基础入门-秦红华-专题视频课程

    美女讲师教你学Python第一季:基础入门-448人已学习 课程介绍         本课程以最新的Python3为基础,面向Python编程语言的初学者: 精选教材,内容反复锤炼,精炼详实,既有实用 ...

  8. 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)

    小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...

  9. 0基础学python难吗-零基础入门学习Python技术难不难?

    原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...

最新文章

  1. [BZOJ2527]Meteors
  2. java增加 删除 修改表格_Java实现单链表的创建、添加、修改、删除
  3. 如何创建修改分区表和如何查看分区表
  4. [Qt教程] 第33篇 网络(三)FTP(一)
  5. jQuery plugin 开发的一个例子
  6. unity 编辑器扩展 扩展摄像机的属性查看器
  7. ie的window.open 未指明的错误_错误还是违法——离开的原因之一
  8. sklearn中的train_test_split函数
  9. “KVM is not available”的相应解决方案
  10. linux管理员基础知识
  11. C语言,函数调用使用方法
  12. android陀螺仪 cemu,CEMU安卓手柄陀螺仪教程
  13. JAVA深拷贝与浅拷贝(呕心沥血之作)
  14. 浅谈测试小白到测试大牛的成长历程(分四个境界)
  15. python ca模块_[转]常用的python模块及安装方法
  16. 《自控力》读书笔记及实践
  17. java 判断两个经纬度差异_计算两个经纬度点的实际距离
  18. 60-硅谷课堂6-硅谷课堂-公众号消息和微信授权-- 笔记
  19. 网络安全基础:公钥密码体制
  20. OA项目之部门管理的功能实现

热门文章

  1. Quartz——简介和使用
  2. 谈谈B端、C端、G端的产品区别
  3. Uwsgi+Nginx+Django部署
  4. 8种在JavaScript数组中查找指定元素的方法(用于开发中数据的处理)
  5. RGB 和 CYMK 的区别
  6. 自动驾驶汽车如何有助于可持续移动规划?
  7. 在计算机中公式运算符有哪些,Excel在公式中使用运算符号
  8. 小王的研发日记-自动对焦(硬件与计算机通信)
  9. 为什么Python是数据可视化编程的最佳选择?
  10. 替代触发器和系统触发器