Canvas:绘制失败的问题
beginPath
绘制路径必须添加 beginPath()。它标志着一个画笔在画布中哪个地方开始画起。没有它,新起的画笔位置必定与上一次画笔结束的位置相连。
// 第一个半圆
ctx.arc(60, 80, 50, 0, Math.PI, true);
ctx.fillStyle = 'gold';
ctx.fill();
ctx.strokeStyle = 'red';
ctx.stroke();
// 第二个半圆
ctx.arc(240, 200, 50, 0, Math.PI, false);
ctx.fillStyle = 'gold';
ctx.fill();
ctx.strokeStyle = 'green';
ctx.stroke();
可以看到半圆的两个端点与另一个半圆的两个端点互连起来了,如果不用 beginPath(),画布就无法确定画笔新的起始点在哪里,默认就连起来绘制路径。就好像是我们写连笔字一样,笔画与笔画之间相连不断。
当我们在每一个新的画笔开始前写上 beginPath() 函数后,最终效果如下图:
closePath
一般情况下,beginPath() 和 closePath() 是搭配使用的,就是说,画笔从开始绘制路径结束之后,画笔回到起始点。就像是我们用完一件物品之后,要把它换回到原来的地方一样。
利用 closePath(),我们可以用绘制一个三角形:
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(100, 140);
ctx.lineTo(20, 140);
ctx.closePath(); // 画笔置于起始位置,(20, 20)
ctx.stroke();
其实也可以不用 closePath() 把画笔置于起始位置,可以用 ctx.lineTo(20, 20);
继续把路径延续下去。也就是说,closePath() 在路径中可以被省略。
stroke
stroke() 函数也是绘制路径的关键,图形的绘制由它来完成,在此之前我们要确定好路径的起始坐标以及结束坐标即可。
ctx.beginPath();
ctx.arc(150, 150, 100, 0, Math.PI * 2, true);
因为没有调用 stroke() 函数完成路径的绘制,所以画布中什么图形都没有出现:
补全这个关键的函数之后,画布出现了圆形:
Canvas:绘制失败的问题的更多相关文章
- 微信小程序之生成图片分享 二维码分享 canvas绘制
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 添加画布 首先,在小程序里进行绘图操作需要用到<canvas>组件,步骤大致分为以 ...
- 小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)
小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像) 微信小程序生成特色头像,海报等是比较常见的.下面我来介绍下实现该类小程序的过程. 首先选择前端来通过 canvas 绘制.这样比较节 ...
- HTML5学习总结——canvas绘制象棋(canvas绘图)
一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...
- 用canvas绘制折线图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 封装 用canvas绘制直线的函数--面向对象
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...
- canvas绘制经典折线图(一)
最终效果图如下: 实现步骤如下:注-引用了jQuery HTML代码 <!doctype html> <html lang="en"> <head&g ...
- Canvas绘制图形
1.Canvas绘制一个蓝色的矩形 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- [canvas]利用canvas绘制自适应的折线图
前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...
- 使用Canvas绘制背景图
原文 http://www.imququ.com/post/use-canvas-as-background-image.html 最近iCloud Web的Beta版换了UI,整体风格变得和iOS ...
随机推荐
- [深度学习] tf.keras入门2-分类
目录 Fashion MNIST数据库 分类模型的建立 模型预测 总体代码 主要介绍基于tf.keras的Fashion MNIST数据库分类, 官方文档地址为:https://tensorflow. ...
- IT编程相关内容汇总 - 进阶者系列 - 学习者系列文章
笔者工作了十多年了,对于技术也有一定的经验,但是IT编程技术的更新是挺快的,特别是各种框架,各种中间件啥的都涌现出来了.这篇博文笔者打算将IT编程的前端.后端.数据库和移动端做一个博文知识汇总,让阅读 ...
- Spring Boot 3.0横空出世,快来看看是不是该升级了
目录 简介 对JAVA17和JAVA19的支持 record Text Blocks Switch Expressions instanceof模式匹配 Sealed Classes and Inte ...
- [Leetcode]扁平化多级双向链表
题目 https://leetcode-cn.com/explore/learn/card/linked-list/197/conclusion/764/ 代码 /* // Definition ...
- [LeetCode]对角线遍历
题目 代码 class Solution { public: vector<int> findDiagonalOrder(vector<vector<int>>&a ...
- 虚拟化技术浅析第二弹之初识Kubernetes
作者:京东物流 杨建民 一.微服务架构起源 单体架构:可以理解为主要业务逻辑模块(我们编写的代码模块,不包括独立的中间件)运行在一个进程中的应用,最典型的是运行在一个Tomcat容器中,位于一个进程里 ...
- Java基础学习笔记-运算符ヽ( ̄▽ ̄)و
运算符 运算符-按功能分为7种 1.赋值运算符 广义赋值运算符 +=, -=, *=, /=, %=, &=, |= 一般形式:变量名 运算符=表达式 两侧的类型不一致会进行 自动类型转换 和 ...
- 四、python解释器、环境变量和多版本共存
目录 一.python解释器 1.python发展方向 2.python解释器 1.历史 2.版本 3.下载 4.安装 5.使用 二.环境变量与多版本共存 环境变量设置 多版本共存 三.运行pytho ...
- 淘宝首页数据采集之js采集
搜索页面采集,数据在控制台哦!!! 搜索页面采集,数据在控制台哦!!! 搜索页面采集,数据在控制台哦!!! 既然能打到控制台,当然也能传到系统!!! 既然能打到控制台,当然也能传到系统!!! 既然能打 ...
- rust 网上资料记录(自用)
最近要学嵌入式的rust,记录一些资料的url,方便自己查阅 书籍 常用的: rust圣经(不是权威指南那本)https://course.rs/ 中文 rust 参考手册 https://rustw ...