canvas绘制线条详解
canvas详解----绘制线条
<!DOCTYPE html>
<html>
<head>
<title>canvas详解</title>
</head>
<body>
<canvas id="canvas" width="1024" height="768" style="border:1px solid #aaa;display:block;margin:50 auto;"></canvas>
</body>
</html>
其中创建一个canvas元素就可以创建一个画布,但是如果你不设置参数的话,在浏览器上面是不显示的。所以可以设置一些参数让画布显示出来。此外画布的宽度可以在标签内设置,如果在css中设置宽度,高度,其实设置的是画布的显示宽度,高度。此外这里面的高度,宽度都没有设置px,不需要设置这些。
如何使用canvas画布操作,需要在javascript中进行如下操作
var canvas=document.getElementById("canvas");
var context=canvas.getContext("2d");
首先获取canvas画布,然后在获取上下文环境context;
在html文件中加入下面代码
<script type="text/javascript">
window.onload=function(){
var canvas=document.getElementById("canvas");
canvas.width=1024;
canvas.height=768;//通过这两种方式也可以设置canvas的大小;
var context=canvas.getContext("2d");
}
</script>
如果你想让浏览器不兼容这个画布的时候显示"浏览器不兼容的字样的时候"可以在html中canvas标签内填写<canvas id="canvas">浏览器不兼容</canvas>
也可以在js中设置
if(canvas.getContext("2d")){
var context=canvas.getContext("2d");
} else{
alert("浏览器不兼容");
}
现在来看一下如何画一条线
Draw a line
context.moveTo(100,100) context.lineTo(700,700) context.stroke()
canvas绘图是一种基于状态的绘图
也就是说他是先想好如何绘图,设置好状态,然后再来绘制图形,上面的moveTo().lineTo(),设置的就是绘图状态
表示的是一个线段,moveTo(x,y)表示的是从点(x,y)开始绘制线段,lineTo(x1,y1)表示这个线段的终点是点(x1,y1);然后真正绘制的函数是stroke(),用来绘制线段,最终绘制好了一条线段。
此外还可以设置线条的一些属性,在stroke之前,比如
canvas.lineWidth=5;设置线条的宽度 canvas.strokeStyle="#eeddcc".或者canvas.fillStyle="";设置线条的样式,主要是颜色。 context.moveTo(100,100) context.lineTo(700,700) context.lineTo(240,340) context.stroke()
这样画出来的是一条折线,起点是(100,100),画到(700,700),然后在以(700,700)为起点,画到(240340).
如果 再在后面加上一句conText.lineTo(100,100)就成了一个三角形了。
如果我们要给这个三角形着色的话,就需要以下操作
将stroke()换成fill();
context.moveTo(100,100) context.lineTo(700,700) context.lineTo(240,340) canvas.fillStyle="#eeddcc". context.fill();
如果我们在后面再加上这样一句;
context.moveTo(100,100);
context.lineTo(367,345);
context.lineTo(798,456);
context.lineTo(100,100); context.fillStyle="rgb(2,100,30)";
context.fill();
context.lineWidth=5;
context.strokeStyle="red";
context.stroke();
表示的是在这个重了颜色的三角形上给他的边缘在画一下,最终结果是这个三角形的填充色是rgb(2,100,30),边框线的颜色是red;

上面讲述的都是画一个形状,如果画两个图像呢?
context.moveTo(100,100);
context.lineTo(200,200);
context.lineTo(100,456);
context.lineTo(100,100);
context.lineWidth=5;
context.strokeStyle="rgb(2,100,30)";
context.stroke();
context.moveTo(120,100);
context.lineTo(220,200);
context.strokeStyle="red";
context.stroke();最后你会发现这两个图像都是这个颜色red,为什么会出现这种原因呢???

因为之前我们都说过canvas绘图是状态绘图,在绘制第二个图形时,第一个图形的状态又重新执行了一次,然而颜色却是以最后的颜色执行的。所以都是红色,并且线的粗细也一样。
另外还要注意,如果上面设置的是填充,下面设置的是画线,怎是不一样的。注意了。
最后这里面我们设置画布的大小,以及线的宽度都没有加px;注意了奥!
那我们如何画两个及以上图像且设置他们不同属性啊。
这时候我们就要在路径开始前加上一句context.beginPath(),结束之后加上一句context.closePath();
这样在这两句之间的路径只会在下面最近的绘制中执行,下面的下面的绘制不会在执行了。
context.lineWidth=5;
context.beginPath();
context.moveTo(120,100);
context.lineTo(220,200);
context.closePath();
context.strokeStyle="red";
context.stroke();
context.beginPath();
context.moveTo(100,100);
context.lineTo(200,200);
context.lineTo(100,456);
context.lineTo(100,100);
context.closePath();
context.strokeStyle="rgb(2,100,30)";
context.stroke();
结果显示如下

canvas绘制线条详解的更多相关文章
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- canvas绘图API详解
canvas绘图API详解 1.context的状态 矩阵变换属性 当前剪辑区域 context的其他状态属性: strokeStyle, fillStyle, globalAlpha, lineWi ...
- canvas arcTo()用法详解 – CodePlayer
canvas arcTo()用法详解 – CodePlayer canvas arcTo()用法详解
- 使用html5 Canvas绘制线条(直线、折线等)
使用html5 Canvas绘制直线所需的CanvasRenderingContext2D对象的主要属性和方法(有"()"者为方法)如下: 属性或方法 基本描述 strokeSty ...
- html5的canvas绘制线条,moveTo和lineTo详解
今天在看html5,里面新增的属性有一个canvas,它相当于一个画布你可以用js在里面画你想要的效果!我在w3c的手册里面看到用moveTo和lineTo绘制线条讲的不是很清楚,尤其是moveTo和 ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- 第157天:canvas基础知识详解
目录 一.canvas简介 1.1 什么是canvas?(了解) 1.2 canvas主要应用的领域(了解) 二.canvas绘图基础 2.0 sublime配置canvas插件(推荐) 2.1 Ca ...
- Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解
上篇文章介绍了自定义View的创建流程,从宏观上给出了一个自定义View的创建步骤,本篇是上一篇文章的延续,介绍了自定义View中两个必不可少的工具Canvas和Paint,从细节上更进一步的讲解自定 ...
- canvas createPattern()方法详解
createPattern作用 createPattern() 方法在指定的方向内重复指定的元素. 元素可以是图片.视频,或者其他 <canvas> 元素. 被重复的元素可用于绘制/填充矩 ...
随机推荐
- css Backgroud-clip (文字颜色渐变)
首先来瞄一下background-clip,这个属性是干嘛的? 顾名思义,背景裁剪... 按照我自己的理解就是背景的显示区域 此处粘上MDN的示例链接(嫌麻烦的,后面我也贴上截图)https:// ...
- Python学习心得体会总结,不要采坑
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:樱桃小丸子0093 大家要持续关注哦,不定时更新Python知识 ...
- 使用SQL计算宝宝每次吃奶的时间间隔(续)
本文是<使用SQL计算宝宝每次吃奶的时间间隔>的续篇,因为我工作繁忙,时常不能及时帮助媳妇儿记录,为了让不懂数据库的媳妇儿也可以自己用手机熟练操作.我继续做了一些修正和封装: 1.给媳妇儿 ...
- Docker (二) Windows10专业版安装教程
前言 本文将基于 windows10专业版 来安装docker 1.开启Hyper-V 温馨小提示:之前小编是windows10企业版没有Hyper-V这个功能,于是通过DockerToolbox安装 ...
- React中setState学习总结
react中setState方法到底是异步还是同步,其实这个是分在什么条件下是异步或者同步. 1.先来回顾一下react组件中改变state的几种方式: import React, { Compone ...
- 简单使用一下IDEA 的HTTP Client
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 相信大家都用过POSTMAN吧,后端在开发的时候 ...
- 《Java练习题》进阶练习题(一)
编程合集: https://www.cnblogs.com/jssj/p/12002760.html 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. [程序48 ...
- IT兄弟连 HTML5教程 响应式网站的内容设计
基于响应式开发网站,除了页面的布局是我们设计的重点,网站中显示的图片和文字也是我们不能轻视的内容. 1 响应式图片显示内容设计 真正具有响应性的Web设计是完全调整网站以满足访问者的设备.我们需要在 ...
- 记录一次Windows简单构建Dockerfile
参考文档[https://www.cnblogs.com/GraceSkyer/p/9908984.html] 1]环境说明 操作系统 :win10 ,docker软件:Docker for Win ...
- 通过 loganalyzer 展示数据库中的系统日志
目录 通过 loganalyzer 展示数据库中的日志 环境准备 准备服务器: 日志服务器: 数据库服务器: 测试日志服务器和数据库是否连接: websrv服务器端: 通过 loganalyzer 展 ...