两种方法绘制笑脸(需要用到canvas标签)

news2024/11/27 10:39:03

两种方法绘制笑脸(需要用到canvas标签)
方法一:

<!DOCTYPE html>
<html>
	<head lang="en">
		<meta charset="utf-8">
		<title>绘制笑脸-方法一</title>
	</head>
	<body>
		<canvas id="cavsElem" width="400" height="300">
			你的浏览器不支持canvas,请升级浏览器
		</canvas>
		<script>
			/* 绘制圆脸 */
			//获得画布并上下文对象 
			var context = document.getElementById('cavsElem').getContext('2d');
			context.beginPath(); //开始路径
			context.arc(100, 100, 100, 0, 2 * Math.PI, true); //绘制圆形,true为逆时针
			context.closePath(); // 关闭路径
			context.fillStyle = 'green'; //设置填充颜色
			context.fill(); //填充
			/* 绘制小嘴 */
			context.beginPath(); //开始路径
			context.strokeStyle = "#fff"; //设置描边颜色
			context.lineWidth = 5;//设置线的粗细
			context.arc(100, 130, 20, Math.PI / 6, 5 * Math.PI / 6, false); //绘制弧形,false为顺时针
			// context.closePath();
			context.stroke(); //描边
			/* 绘制左眼 */
			context.beginPath(); //开始路径
			context.arc(50, 75, 20, 0, 2 * Math.PI, true); //绘制圆形,true为逆时针
			context.closePath(); // 关闭路径
			context.fillStyle = 'white'; //设置填充颜色
			context.fill(); //填充
			
			/* 绘制右眼 */
			context.beginPath(); //开始路径
			context.arc(150, 75, 18, 0, 2 * Math.PI, true); //绘制圆形,true为逆时针
			context.closePath(); // 关闭路径
			context.fillStyle = 'white'; //设置填充颜色
			context.fill(); //填充
			context.stroke(); //描边
		</script>
	</body>
</html>

效果图:
笑脸一
方法二

<!DOCTYPE html>
<html>
	<head lang="en">
		<meta charset="utf-8">
		<title>绘制笑脸-方法二</title>
	</head>
	<body>
		<canvas id="cavsElem" width="400" height="300">
			你的浏览器不支持canvas,请升级浏览器
		</canvas>
		<script>
			/* 绘制圆脸 */
			//获得画布并上下文对象 
			var context = document.getElementById('cavsElem').getContext('2d');
			context.lineWidth = 5;//设置线的粗细
			context.moveTo(200, 100);
			context.arc(100, 100, 100, 0, 2 * Math.PI, true); //绘制圆形,true为逆时针
			context.fillStyle = 'green'; //设置填充颜色
			context.fill(); //填充
			/* 绘制小嘴 */
			var deg = Math.PI / 6;
			context.moveTo(100 + 20 * Math.cos(deg), 130 + 20 * Math.sin(deg));
			context.strokeStyle = "#fff"; //设置描边颜色
			
			context.arc(100, 130, 20, Math.PI / 6, 5 * Math.PI / 6, false); //绘制弧形,false为顺时针
			context.stroke(); //描边
			/* 绘制左眼 */
			context.moveTo(30, 75);
			for (var i = 18; i >= 0; i -= 5) {
				context.arc(50, 75, i, 0, 2 * Math.PI, false); //绘制圆形,true为逆时针
			}
			
			// /* 绘制右眼 */
			context.moveTo(130, 75);
			for (var i = 18; i >= 0; i -= 5) {
				context.arc(150, 75, i, 0, 2 * Math.PI, false); //绘制圆形,true为逆时针
			}
			context.stroke(); //描边
		</script>
	</body>
</html>

效果图
笑脸二

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二开项目权限应用全流程

二开项目-权限应用全流程(人力资源类) addRoutes基本使用** 格式 **router.addRoutes([路由配置对象])**或者:this.$router.addRoutes([路由配置对象]) 改造代码 1 .在router/index.js中的路由配置中删除动态路由的部分 export const constantRoutes [{path: /login,comp…

【ChatGPT】如何入门GPT并快速follow当前的大语言模型LLM进展?

如何入门GPT并快速follow当前的大语言模型LLM进展? 自从去年chatGPT悄悄发布,OpenAI发布的GPT系列工作也变得炙手可热,而基于此,各家公司/实验室百家争鸣,纷纷发布自己的工作,可以说每天都有新的进展。 在当前的情况下,要如何入门GPT系列生成模型,并快速跟进SOTA进展…

SpringMVC一站式学习,分分钟钟让你上手

文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本类型参数3.2 实体收参【重点】3.3 数组收参3.4 集合收参 【了解】3.5 路径参数3.6 中文乱码 四…

突破障碍:数字化如何改变对外劳务行业

有没有一份工作是又高薪又能学英语又能环游世界&#xff1f;在小红书上一搜&#xff0c;就发现许多年轻人曾经有过“国际邮轮”工作的经历&#xff0c;打卡全球100城市、全方面的英文口语环境、一觉起来就是一个新的国家...而且还能赚钱&#xff1f;听上去真是令人向往的生活&a…

PoseiSwap 参赛,参与斯坦福、Nautilus Chain等联合主办的 Hackathon 活动

近日&#xff0c;由 Stanford Blockchain Accelerator、Zebec Protocol、 Nautilus Chain、Rootz Lab 共同主办的“ Boundless Hackathon Stanford ” 主题的黑客松活动&#xff0c;目前已接受报名。该活动旨在帮助更多的优质开发者参与到 Web3 世界的发展中&#xff0c;推动链…

自动化测试框架、Python面向对象以及POM设计模型简介

目录 1 自动化测试框架概述 2 自动化测试框架需要的环境 3 自动化测试框架设计思想&#xff1a;Python面向对象 4 自动化测试框架设计思想&#xff1a;POM&#xff08;Page Object Model&#xff09;页面对象模型 1 自动化测试框架概述 所谓的框架其实就是一个解决问题…

如何在华为OD机试中获得满分?Java实现【去除多余空格】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 去除文本多余空格,但不…

MOTOTRBO CPS2.0安装与写频流程

一、安装MOTOTRBO CPS2.0写频软件 安装MOTOTRBO CPS2.0写频软件&#xff0c;选择安装软件的电脑系统必须WIN7以上 1.解压CPS2_2.21.61.0.zip至当前文件内 2. 双击MOTOTRBO_CPS_2.0.exe安装文件 3. 选择安装语言中文&#xff08;简体&#xff09;&#xff0c;点击确定 4.点击下一…

SW质量属性

1. 覆盖质量属性&#xff1a;指派质量、质量中心和惯性张量的值以覆写所计算的值。 2. 质量属性内容&#xff1a; 密度质量体积曲面区域质量中心惯性主轴惯性矩和产品准则 在图形区域中&#xff0c;单色三重轴指示了模型的主轴和质量中心。 三色参考 3D 三重轴将显示在原点 …

Windows10如何快速安装虚拟机! Hyper-V

您可以在 Windows 10 上使用 Hyper-V 来创建虚拟机。Hyper-V 是 Microsoft 提供的虚拟化软件。您可以按照以下步骤在 Windows 10 上安装 Hyper-V 虚拟机&#xff1a; 1. 打开 Hyper-V 管理器&#xff0c;您可以按下 Windows 键并键入 “Hyper-V 管理器”。如果没有Hyper-V这个选…

汇编寄存器认识

1.8086CPU的16个寄存器: 8086CPU所有寄存器都16位: 通用寄存器: 存放一般性数据: 包括 数据寄存器 , 指针寄存器, 索引寄存器 (AX,BX,CX,DX,BP,SP,SI,DI) 数据寄存器: AX,BX,CX,DX AX: AX(Accumulator Register) &#xff1a;累加寄存器&#xff0c;主要用于输入/输出和大…

【JavaSE】Java基础语法(十七)

文章目录 1. final2. 代码块2.1 代码块概述2.2 代码块分类 1. final fianl关键字的作用 final代表最终的意思&#xff0c;可以修饰成员方法&#xff0c;成员变量&#xff0c;类 final修饰类、方法、变量的效果 fianl修饰类&#xff1a;该类不能被继承&#xff08;不能有子类&a…

【EHub_tx1_A200】Ubuntu18.04 + ROS-Melodic/ROS2-Elequent + 速腾 RS-Helios_16P雷达 评测

大家好&#xff0c;我是虎哥&#xff0c;之前使用了很多单线激光雷达&#xff0c;这几年&#xff0c;3D激光雷达国产化后&#xff0c;逐步已经降价很多&#xff0c;3D激光雷达对于大环境导航&#xff0c;无人驾驶辅助导航&#xff0c;都有很多优势。经过逐步的筛选&#xff0c;…

性能测试知多少---性能分析与调优的原理

最近一直纠结性能分析与调优如何下手&#xff0c;先从硬件开始&#xff0c;还是先从代码或数据库。从操作系统&#xff08;CPU调度&#xff0c;内存管理&#xff0c;进程调度&#xff0c;磁盘I/O&#xff09;、网络、协议&#xff08;HTTP&#xff0c; TCP/IP &#xff09;&…

JavaEE——自主实现计时器

文章目录 一、认识定时器二、自主实现定时器1.明确定时器的内核原理2.定时器框架搭建3.优先级队列中的比较问题4.“忙等”问题5. 代码中随机调度的问题 三、整体代码罗列 一、认识定时器 什么是定时器 定时器是我们在日常的软件开发中很重要的一个组件。类似于闹钟&#xff0c…

毫米波雷达数据采集

目录 1.数据采集方式2.分析数据格式3. 解读原始数据4.Bin文件格式 1.数据采集方式 数据采集有两种方式&#xff1a; 方式一&#xff1a;使用SDK中包含的Capture Demo&#xff1a; how to save raw data from the Capture Demo using Code Composer Studio(CCS) 在CCS中通过…

Python自动化测试框架有哪些?怎么选

目录 自动化测试框架概念 自动化测试框架根据思想理念和深度不同&#xff0c;渐进式的分为以下几种&#xff1a; 模块化测试脚本框架&#xff1a; 测试库框架&#xff1a; 数据驱动测试框架&#xff1a; 关键字驱动或表驱动的测试框架&#xff1a; 混合测试自动化框架&am…

软考A计划-软件设计师笔记

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

2023自动部署神器——Jenkins全网最全攻略

​ 大纲 ​ 1.背景 在实际开发中&#xff0c;我们经常要一边开发一边测试&#xff0c;当然这里说的测试并不是程序员对自己代码的单元测试&#xff0c;而是同组程序员将代码提交后&#xff0c;由测试人员测试&#xff1b; 或者前后端分离后&#xff0c;经常会修改接口&#xff…

从0到1腾讯云服务器使用教程(新手入门)

腾讯云服务器使用教程包括注册账号实名认证、选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置、安全设置和云服务器远程连接、安全组端口开通教程、云服务器环境部署以搭建网站为例手把手网站上线&#xff0c;云服务器文件传输和数据备份以及技术支持等详细说明&#…