当前位置: 首页 > news >正文

H5画布绘制笑脸

H5画布绘制笑脸

一、绘制三角形

  1. canvas绘制三角形
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>三角形</title>
		<style>
			#myCanvas{
				box-shadow: 0 0 5px black;
				margin-top: 50px;
				margin-left: 50px;
			}
		</style>
	</head>
	<body>
		<!--宽高只能在属性值设置,样式设置像素值有差别-->
		<canvas id="myCanvas" width="500" height="500">
		</canvas>
	</body>
	<script>
		//获取canvas对象b
		var canvas = document.getElementById("myCanvas");
		//上下文:理解:canvas标签内置画笔
		var ctx = canvas.getContext("2d");//目前仅支持2d画板
		//线段方法
		//1.新建一条路径
		ctx.beginPath();
		//2.设置起点,理解:移动画笔的位置
		ctx.moveTo(50,50);
		//3.设置另一个点坐标
		ctx.lineTo(100,100);
		//设置第三个点
		ctx.lineTo(200,100);
		//ctx.lineTo(50,50);
		//4.0闭合路径(不是必须的方法):终点和起点关闭。
		ctx.closePath();
		//4.绘制
		ctx.stroke();
	</script>
</html>

​ 在body中添加一个canvas元素创建画板,指定宽高度500px、id属性myCanvas用于定位。在style元素中给画板添加样式,box-shadow添加盒子阴影,margin-top、margin-left指定外边距。创建script元素编写js脚本。首先通过id获取画板变量,然后通过getContext(“2d”)方法获取上下文ctx。

​ 线段的画法,首先通过ctx.beginPath()方法新建一条路径,然后通过ctx.moveTo(50, 50)设置移动画笔的起点,再通过ctx.lineTo(100, 100)设置另一个点的坐标、ctx.lineTo(200, 100)设置第三个点的坐标,接着通过ctx.closePath()闭合路径,最后使用ctx.stroke()绘制图形。
在这里插入图片描述

  1. 绘制图形,填充颜色
//获取canvas对象
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(100, 100);
ctx.lineTo(200, 100);
ctx.lineTo(350, 400);
//填充路径绘制,当使用fill函数绘制时,没有闭合的路径会默认闭合,不需要使用closePath()关闭路径,但是stroke()不会自动闭合
ctx.fill();

在这里插入图片描述

二、绘制矩形

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
//绘制矩形直接绘制,路径自动创建,前两个起始位置,后两个宽高度
ctx.strokeRect(100, 100, 100, 200);
//绘制一个填充矩形
ctx.fillRect(0, 0, 100, 100);
//清除绘制,清除部分完全透明
ctx.clearRect(50, 50, 40, 40);
//清除画布
ctx.clearRect(0, 0, 100, 100);
//清除整个画布
ctx.clearRect(0, 0, canvas.width, canvas.height);

三、绘制圆形

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
//绘制圆形或者圆弧使用arc()函数
//arc(x: Number, y: Number, radius: Number, startAngle: Number, endAngle: Number, anticlockwise: Boolean): none
//绘制一个以x,y为圆心,radius为半径,从startAngle弧度开始到endAngle结束,anticlockwise:绘制方向,布尔值,默认false顺时针
//顺时针画一个圆形
ctx.arc(200, 200, 50, 0, Math.PI*2, false);
//顺时针画半个圆,绘制的起点默认在最右边
ctx.arc(200, 200, 50, 0, Math.PI, false);
//起始位置90度,默认在右边顺时针走90度为起始位置
ctx.arc(200, 200, 50, Math.PI/2, Math.PI, true);
//绘制
ctx.stroke();

四、绘制笑脸

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.fillStyle = "green";
ctx.arc(250,250,100,0,Math.PI*2,false);
ctx.fill();

ctx.beginPath();
//设置圆弧颜色为红色
ctx.strokeStyle = "red";
ctx.arc(250,250,70,0,Math.PI,false);
ctx.stroke();

ctx.beginPath();
ctx.fillStyle = "orange";
ctx.arc(220,220,10,0,Math.PI*2,false);
ctx.fill();

ctx.beginPath();
ctx.fillStyle = "orange";
ctx.arc(280,220,10,0,Math.PI*2,false);
ctx.fill();

​ 绘制方法,先画外层圆,再画里面的圆弧和小圆。笑脸的各个部分分别绘制,方便控制每个部分的填充颜色。
在这里插入图片描述

相关文章:

  • 【定制项目】【M14 监测预警平台】百度地图区域绘制(时间轴)/柱状图/仪表图 - 关键技术 python flask + echarts
  • RS笔记:深度推荐模型之SIM(基于搜索的超长行为序列上的用户长期兴趣建模)[CIKM 2020, 阿里妈妈广告团队]
  • 关于第一次接入Kotlin
  • C++中菱形类关系再理解
  • stack和queue的使用和模拟实现
  • 【C++】 string类常用接口的实现
  • 华为防火墙基础自学系列 | 汇总
  • TNet 中 JoinChannel 场景名可写可不写
  • 使用容器编译Yocto镜像
  • 【uniapp】小程序中修改Vant组件navbar左箭头的颜色及图标
  • 【区块链 | 智能合约】如何编写一个可升级的智能合约
  • java毕业设计开题报告javaweb户籍管理系统|户口
  • 交换机堆叠+链路聚合+浮动静态路由
  • (分布式缓存)Redis持久化
  • 计算机组成原理第二章----数据信息的表示 详解版(写的这么接地气我一下就懂了?)
  • php的引用
  • @angular/forms 源码解析之双向绑定
  • iOS 系统授权开发
  • jdbc就是这么简单
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何解决微信端直接跳WAP端
  • 使用 @font-face
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #HarmonyOS:基础语法
  • (16)Reactor的测试——响应式Spring的道法术器
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (第一天)包装对象、作用域、创建对象
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十六)一篇文章学会Java的常用API
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)http-server应用
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)菜鸟学数据库(三)——存储过程
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net 提取注释生成API文档 帮助文档
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net下的签名与混淆
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .net中生成excel后调整宽度
  • .考试倒计时43天!来提分啦!
  • ::
  • @Service注解让spring找到你的Service bean
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ 数据结构 - C++]红黑树RBTree
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [flume$2]记录一个写自定义Flume拦截器遇到的错误
  • [IE编程] 如何编程清除IE缓存
  • [J2ME]url请求返回参数非法(java.lang.illegalArgument)