Canvas入门02-绘制直线
2024-09-05 04:49:58
主要使用的API有:
- context.moveTo(x,y) 声明线的起始坐标
- context.lineTo(x,y) 声明线的下一个坐标
- context.fillStyle 声明线的填充颜色
- context.fill() 填充
- context.strokeStyle 声明线的颜色
- context.stroke() 绘制直线
- context.beginPath() 声明线的开始
- context.closePath() 声明线的结束
var canvas = document.getElementById('canvas');
canvas.width = 1024;
canvas.height = 768; if (canvas.getContext('2d')) {
var context = canvas.getContext('2d');
console.log(context); // CanvasRenderingContext2D // 使用contex进行绘制 // draw a line
context.moveTo(100, 100); // 声明起点,坐标轴是以canvas的左上角为原点
context.lineTo(700, 700); // 声明终点
context.lineTo(100, 700);
context.lineTo(100, 100); context.fillStyle = 'rgb(2, 100, 30)';
context.fill(); // 填充 context.lineWidth = 5; // 声明线的宽度
context.strokeStyle = "red"; // 声明线的颜色
context.stroke(); // 绘制直线 // draw a another line
context.moveTo(200, 100);
context.lineTo(700, 600);
context.strokeStyle = 'black'; // 线条颜色会覆盖之前声明的颜色
context.stroke();
} else {
alert('当前浏览器不支持Canvas,请更换浏览器后再试');
}
结果:
先设置了线的颜色为红色,再设置线的颜色为黑色,但是最后结果,画出来都是黑色的。这是为什么呢?
因为canvas 绘图是基于状态的,下面设置的颜色状态会覆盖上面的设置状态。
那么如何才能画不同颜色的线呢?
要在每一个单独的path前后,使用 context.beginPath() 和 context.closePath()。
// draw a line
context.beginPath();
context.moveTo(100, 100); // 声明起点,坐标轴是以canvas的左上角为原点
context.lineTo(700, 700); // 声明终点
context.lineTo(100, 700);
context.lineTo(100, 100);
context.closePath();
context.fillStyle = 'rgb(2, 100, 30)';
context.fill(); // 填充 context.lineWidth = 5; // 声明线的宽度
context.strokeStyle = "red"; // 声明线的颜色
context.stroke(); // 绘制直线 // draw a another line
context.beginPath();
context.moveTo(200, 100);
context.lineTo(700, 600);
context.closePath(); context.strokeStyle = 'black'; // 线条颜色会覆盖之前声明的颜色
context.stroke();
结果:
最新文章
- CSharpGL(38)带初始数据创建Vertex Buffer Object的情形汇总
- 阶乘之和--nyoj91
- Self Organizing Maps (SOM): 一种基于神经网络的聚类算法
- Windows下64位Apache服务器的安装
- 永不消逝的电波(三):低功耗蓝牙(BLE)入门之如何调戏别人的小米手环
- hdoj 5402 Travelling Salesman Problem
- 获取地理位置的html5代码
- MINA之心跳协议运用
- 功能: 用函数 funName 对数组 objArray 中的每个值进行处理一次,
- iOS开发系列之触摸事件
- js和jquery中有关透明度操作的问题
- Jenkins项目部署使用教程-----02视图及项目添加
- Oracle和Elasticsearch数据同步
- CodeSignal 刷题 —— almostIncreasingSequence
- 登录页面加密token和盐的作用
- Repeater中服务器按钮
- CentOS 6.2图形界面允许root用户登录
- 人工打jar包
- VUE 内置的标签<;keep-alive>;<;/keep-alive>;作用
- spark学习(RDD案例实战)
热门文章
- GNU ARM汇编快速入门
- Jmeter启动jmeter-server.bat 报java.io.FileNotFoundException:rmi_keystore.jks 解决方法
- 使用XML的方式实现账户的CRUD
- Css min-height max-height min-width max-height
- vue导航菜单动态展示
- N皇后问题 --使用位运算解决
- 介绍HTML5几种存储方式
- .NET面试题系列(二十)XX
- Codeforces 960D Full Binary Tree Queries ( 思维 &;&; 模拟 )
- BZOJ3438 小M的作物(和拓展)