前端H5使用canvas画爱心以及笑脸

2023-11-06

目录

canvas简介

画爱心

 效果

 画笑脸

  效果

 结语


canvas简介

        canvas是HTML5中推出的新功能,可以在页面上生成一个画布,使用js可以在画布上绘制一些图形。

画爱心

        画爱心我们需要用到bezierCurveTo方法,可以绘制一个三次贝塞尔曲线,让我们绘制想要的曲线,下面我们看代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <canvas id="canvas" width="500" height="500"></canvas>
  </body>
  <script>
    const canvas = document.getElementById('canvas')

    const ctx = canvas.getContext('2d')

    // 画爱心
    ctx.beginPath()
    ctx.moveTo(250, 250)
    // 右边
    ctx.bezierCurveTo(300, 150, 450, 250, 250, 450)
    ctx.moveTo(250, 450)
    // 左边
    ctx.bezierCurveTo(50, 250, 200, 150, 250, 250)
    ctx.stroke()
  </script>
</html>

 效果

 bezierCurveTo方法参数分别是第一个控制杆的x轴,第一个控制杆的y轴,第二个控制杆的x轴,第二个控制杆的y轴,结束位置的x轴,结束位置的y轴。

 画笑脸

        画笑脸我们需要用到arc方法,此方法可以绘制出一个圆弧。下面我们看代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <canvas id="canvas" width="500" height="500"></canvas>
  </body>
  <script>
    const canvas = document.getElementById('canvas')

    const ctx = canvas.getContext('2d')

    ctx.beginPath()
    // 画圆
    ctx.arc(70, 70, 50, Math.PI * 2, 0)
    ctx.moveTo(105, 70)
    // 画嘴巴
    ctx.arc(70, 70, 35, 0, Math.PI)
    ctx.moveTo(105, 50)
    // 画右边眼睛
    ctx.arc(95, 50, 10, 0, Math.PI, true)
    ctx.moveTo(55, 50)
    // 画左边眼睛
    ctx.arc(45, 50, 10, 0, Math.PI, true)
    ctx.stroke()
    ctx.closePath()
  </script>
</html>

 arc的参数分别是x轴的位置,y轴的位置,大小,圆弧开始角度,圆弧结束角度,反转绘制。

Math.PI是派,乘以2就相当于360度。

  效果

        

 结语

        canvas可以使我们在页面绘制许多不一样的图形,上面我只举了两个非常简单的例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端H5使用canvas画爱心以及笑脸 的相关文章

随机推荐

  • SpringBoot+Shiro实现免密登录

    1 自定义登录认证规则 import org apache shiro authc UsernamePasswordToken public class EasyUsernameToken extends UsernamePasswordT
  • DM6446的视频前端VPFE驱动之ioctl控制(视频缓存区,CCDC,decoder)解析之一

    本文均属自己阅读源码的点滴总结 转账请注明出处谢谢 欢迎和大家交流 qq 1037701636 email 200803090209 zjut com gzzaigcn2012 gmail com 在这里分析驱动的ioctl的内容时 需要结
  • Feature Pyramid Networks for Object Detection 论文笔记

    论文地址 Feature Pyramid Networks for Object Detection 前言 这篇论文主要使用特征金字塔网络来融合多层特征 改进了CNN特征提取 论文在Fast Faster R CNN上进行了实验 在COCO
  • 本地jar包上传的maven仓库,引用jar包中的pom依赖无法下载

    新项目开发公共组件 上传到公司maven仓库 记一次本地项目打包 上传到公司maven仓库的坑 mvn deploy deploy file DgroupId com test 分组 DartifactId test jar名称 Dvers
  • 【cuda】——cuda,opencv混合编程

    思路来自 https www cnblogs com dwdxdy p 3528711 html 但是其cuda源码是有问题的 没有cmakelists txt 背景 采用cuda gpu交换opencv图像的 r b通道 0 代码 mai
  • 恒生ufx接口转变成CTP接口

    由于当初自己的程序是对接ctp接口 里面大量使用了ctp的东西 但最近又要对接恒生的系统 想着不改整个程序 把ufx接口封装成ctp的接口形式 这样上层的业务逻辑都不用改了 已实现的主要功能 ReqUserLogin ReqOrderIns
  • C++的mutable

    一 介绍 mutable的中文意思是 可变的 易变的 正好与const相反 在C 中 mutable也是为了突破const的限制而设置的 被mutable修饰的变量 将永远处于可变的状态 即使在一个const函数中 二 用法 如果类的成员函
  • Nginx 动态负载均衡

    Nginx 负载均衡 动态实现 1 概览 1 传统配置实现的负载均衡 在加减服务器的时候 会遇到下面的问题 1 配置文件是默认地址 则需要重载配置文件 nginx s reload 加载配置文件流程 1 主进程通知worker进程进行重启
  • 一文了解什么是字节对齐(超详细)

    目录 1 什么是字节对齐 2 空类 3 带虚函数的类 32位机器 64位机器 1 什么是字节对齐 得分点 什么是内存对齐 内存对齐的原因 内存对齐的规则 标准回答 什么是内存对齐 现代计算机中内存空间都是按照 字节 byte 划分的 从理论
  • mnist数据集转换成图片和csv文档

    通常官网提供的mnist数据集都是压缩格式的文档 有时候我们在使用的时候需要将其 1 解压成图片格式存入文件夹 2 或者保存成csv格式的文档 1 保存成图片格式 windows下 coding utf 8 Created on Tue F
  • linux audit审计服务audit.rules策略参数

    audit是linux内核的特性 可以通过内核参数audit 1来启用 etc audit audit rules是audit的规则文件 本文主要讲述如何利用audit来监视系统重要资源 一 监控文件系统行为 依靠文件 目录的权限属性来识别
  • 统计回文

    回文串 是一个正读和反读都一样的字符串 比如 level 或者 noon 等等就是回文串 花花非常喜欢这种拥有对称美的回文串 生日的时候她得到两个礼物分别是字符串A和字符串B 现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一
  • udev使用笔记

    一 什么是udev udev是linux kernel的设备管理器 在最新的内核版本中kernel 3 10中udev已经代替了以前devfs hotplug等功能 意味着它要处理添加 删除硬件时 所有的用户空间行为 实际上为什么我关注这个
  • 华为OD机试 - 称砝码(Java)

    题目描述 现有n种砝码 重量互不相等 分别为 m1 m2 m3 mn 每种砝码对应的数量为 x1 x2 x3 xn 现在要用这些砝码去称物体的重量 放在同一侧 问能称出多少种不同的重量 输入描述 对于每组测试数据 第一行 n 砝码的种数 范
  • Anduino+esp8266_relay继电器 开发智能开关,APP可远程控制

    一 准备工作 1 在网上要购买一块ESP8266 01s带relay继电器的 价格10几元 2 网上购买一个USB转TTL的转接头 我自己用是CH340 价格几元 3 找一个服务器 当然免费的最好 我用的是酱菜创客平台 此平台是给创客提供一
  • 降温的区块链,或许是一个全新开始!

    现如今 区块链的降温正在让跟风与吹捧现出原形 人们开始从庞杂的区块链市场当中找到新的发展方向 区块链开始从简单的打概念 搞论坛 发ICO 逐步转移到了具体应用上 从这个角度来看 当下降温的区块链或许正孕育着一个全新的开始 区块链开始找到数字
  • STAR法则,被这个理由拒绝这么多次,必须搞明白!

    首先 STAR法则是一种常常被HR使用的工具 用来收集与面试者工作相关的具体信息和能力 一个概念 STAR法则 即为Situation Task Action Result的缩写 具体含义是 Situation情境 HR希望你描述一个你遇到
  • chromecast投屏_如何将手机或者ipad投屏到电脑上

    最玩游戏近老想把ipad投屏到电脑上 于是小编了解了一下现在好用的投屏APP 发现了傲软投屏 这是一款能够同时兼容iOS和安卓系统的同屏软件 支持在Windows及Mac上使用 只要您的安卓系统在5 0及以上 支持Chromecast协议
  • 蓝桥杯 算法训练:最小距离(Java)

    题目 数轴上有n个数字 求最近的两个数 即min abs x y 格式 第一行包含一个整数n 接下来一行 表示n整数 样例输入 6 7 3 4 11 9 17 样例输出 1 思路 刚开始打算使用普通的两两数组元素进行比较 但是发现到达第9个
  • 前端H5使用canvas画爱心以及笑脸

    目录 canvas简介 画爱心 效果 画笑脸 效果 结语 canvas简介 canvas是HTML5中推出的新功能 可以在页面上生成一个画布 使用js可以在画布上绘制一些图形 画爱心 画爱心我们需要用到bezierCurveTo方法 可以绘