canvas-绘制简单路径

这一节,我们将了解关于canvas中如何绘制路径,并详细的介绍一下线的有关知识点

图形的基本元素是路径: 路径是通过不同颜色和粗细的线段或曲线相连形成的不同形状的点的集合

2D 绘制上下文支持很多在画布上绘制路径的方法,通过路径可以创造出复杂的形状和线条,要绘制路径,首先必须调用 beginPath() 方法,表示要开始绘制新路径。

路径绘制图形-凌波微步(五步):

气运丹田: 开始绘制新路径
beginPath(): 新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径

第一步: 创建路径的起始点 (2B铅笔:下笔)
moveTo(x, y): 把路径移动到画布中的指定点,不创建线条

第二步: 根据坐标画出路径(2B铅笔:移动笔)
lineTo(x, y) : 添加一个新点,然后在画布中创建从该点到最后指定点的线条

第三步: 是否闭合路径(2B铅笔:提起笔)
closePath() 方法创建从当前点到开始点的路径。(闭合路径)

第四步: 路径生成之后,选择描边或者填充路径的范围(蜡笔:上色)
1、描边: stroke() 方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色
修改描边颜色:使用strokeStyle= color;

2、填充: fill() 方法填充当前的图像(路径)。默认颜色是黑色。
修改填充颜色: 使用fillStyle = color;
注意: 如果路径未关闭,那么 fill() 方法会从路径结束点到开始点之间添加一条线,来关闭该路径,然后填充该路径

橡皮擦:
clearRect(x, y, width, height) : 清除某区域
语法: x坐标, y坐标, 宽度, 高度

实践:画一个网格

HTML

<body>
    <canvas width="500" height="500" id="draw">
        浏览器不支持Canvas
    </canvas>
</body>

JS

var draw = document.getElementById('draw');
// 2D上下文 : 可绘制简单的2D图形,矩形 弧形 路径
var ctx = draw.getContext('2d');

自上而下,从左往右,间隔为50,画10根线,形成一个网格

for (var i = 0; i <= 10; i++) {
    // 开始绘制路径
    ctx.beginPath();

    // (列)
    // 路径的起点 (下笔) 
    ctx.moveTo(i * 50, 0);
    // 路径的终点 (提笔)
    ctx.lineTo(i * 50, 500);
    // (行)
    // 路径的起点 (下笔) 
    ctx.moveTo(0, i * 50);
    // 路径的终点 (提笔)
    ctx.lineTo(500, i * 50);

    // 关闭路径
    ctx.closePath();

    // 描边路径
    ctx.stroke();

}

效果图


image.png

栗子二: 绘制三角

// 绘制三角
// 开始绘制路径
ctx.beginPath();
// 路径的起点 (下笔)
// 第一个顶点
ctx.moveTo(200, 200);

// 第二个顶点
ctx.lineTo(300, 200);
// 第三个顶点
ctx.lineTo(250, 250);

// 闭合路径
ctx.closePath();
// 填充
ctx.fill();

效果图:


image.png

可以试着矩形以及其他的简单多边形来练练手,这样对于canvas是中的坐标以及简单API加强印象~

canvas-线的样式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • canvas元素的基础知识 在页面上放置一个canvas元素,就相当于在页面上放置了一块画布,可以在其中进行图形的...
    oWSQo阅读 10,288评论 0 19
  • 在Canvas中,线段也是路径中的一种,被称之为线性路径。在Canvas中绘制线性路径主要用到moveTo(x,y...
    王叮叮当当响阅读 2,906评论 0 2
  •   HTML5 添加的最受欢迎的功能就是 元素。这个元素负责在页面中设定一个区域,然后就可以通过 JavaScri...
    霜天晓阅读 3,006评论 0 2
  • 神奇且强大的canvas 一.Canvas的基本介绍 1.什么是Canvas 定义:是HTML5提供的一种新标签,...
    Ainy尘世繁花终凋落阅读 10,744评论 1 18
  • 1.感恩昨晚吃完晚餐之后,又吃了这么多的美食,还有花生瓜子水果,好像被辟谷激发了对食物的欲望,每天都吃的撑撑的。但...
    周晗笑阅读 268评论 0 2