前端canvas的基础使用

news2024/10/7 2:25:36

一、介绍

前端中的 Canvas 是一种用于在网页上绘制图形的 HTML 元素。它提供了一个可以通过 JavaScript 进行绘制的 2D 绘图环境。使用 Canvas,您可以绘制图形,包括线条、矩形、圆形、文本和图像。Canvas 为开发人员提供了灵活自由的绘图能力,可以用于创建交互式游戏、数据可视化、图表和其他富媒体应用程序。

二、基础使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>01_初识canvas</title>
</head>
<style>
    #canvas {

        background-color: #c1c1c1;
        margin: 20px;
    }
</style>

<body>
    <canvas width="800" height="800" id="canvas"></canvas>
</body>
<script>
    //获取画板
    const canvas = document.querySelector('#canvas')
    //获取画笔
    const ctx = canvas.getContext("2d");
    //绘制线段
    ctx.beginPath(); //新建路径
    ctx.moveTo(0, 10);
    ctx.lineTo(200, 10);
    ctx.lineWidth = 10;
    ctx.strokeStyle = 'red'
    ctx.stroke()  //执行绘制
    //绘制线段
    ctx.beginPath(); //新建路径
    ctx.moveTo(0, 20);
    ctx.lineTo(200, 20);
    ctx.lineWidth = 10;
    ctx.strokeStyle = 'blue'
    ctx.stroke()  //执行绘制

    //绘制一个三角形
    ctx.beginPath(); //新建路径
    ctx.moveTo(0, 70);
    ctx.lineTo(200, 70);
    ctx.lineTo(90, 100)
    // ctx.lineTo(0, 70) //结束位置为开始位置,让图形闭合
    ctx.closePath(); //自动闭合api
    ctx.lineWidth = 1;
    ctx.strokeStyle = 'blue'

    //设置填充颜色,并填充图形
    ctx.fillStyle = "green";
    ctx.fill()

    ctx.stroke()  //执行绘制

    //绘制矩形 rect() 需要配合 stroke() 一起使用
    ctx.beginPath();
    ctx.rect(0, 220, 200, 100);
    ctx.strokeStyle = 'red'
    //设置填充颜色,并填充图形
    ctx.fillStyle = "green";
    ctx.fill()
    ctx.stroke()

    //绘制矩形 strokeRect() 
    ctx.beginPath();
    ctx.strokeRect(0, 400, 200, 100);
    ctx.strokeStyle = 'red'

    //绘制并填充矩形 fillRect()
    ctx.beginPath();
    ctx.strokeStyle = 'red'
    ctx.fillRect(0, 600, 200, 100);
 

</script>

</html>

三、效果演示

在这里插入图片描述

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

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

相关文章

转换NC或HDF数据时候转出数据无坐标信息的处理方法

有时候我们在转换NC或HDF数据时&#xff0c;有时候会出现没有坐标信息的情况&#xff01;如下图&#xff1a; 这种情况一般是原始数据将坐标信息存储在说明文件中以便后期做生成坐标信息的处理、或坐标存储的形式比较特殊&#xff0c;造成工具无法读取&#xff01;这种数据处理…

【华为数据之道学习笔记】1-2华为数字化转型与数据治理

传统企业通过制造先进的机器来提升生产效率&#xff0c;但是未来&#xff0c;如何结构性地提升服务和运营效率&#xff0c;如何用更低的成本获取更好的产品&#xff0c;成了时代性的问题。数字化转型归根结底就是要解决企业的两大问题&#xff1a;成本和效率&#xff0c;并围绕…

单点登录方案调研与实现

作用 在一个系统登录后&#xff0c;其他系统也能共享该登录状态&#xff0c;无需重新登录。 演进 cookie → session → token →单点登录 Cookie 可以实现浏览器和服务器状态的记录&#xff0c;但Cookie会出现存储体积过大和可以在前后端修改的问题 Session 为了解决Co…

Java 21 的虚拟线程:高性能并发应用的福音

Java 21 最重要的特性之一就是虚拟线程 (JEP 444)。这些轻量级的线程降低了编写、维护和观察高吞吐量并行应用所需的努力。 在讨论新特性之前&#xff0c;让我们先看一下当前的状态&#xff0c;以便更好地理解它试图解决什么问题以及带来了哪些好处。 平台线程 在引入虚拟线…

多线程(进阶一:锁策略)

一、乐观锁和悲观锁 二、轻量级锁和重量级锁 三、自旋锁和挂起等待锁 四、普通互斥锁和读写锁 五、公平锁和非公平锁 六、可重入锁和不可重入锁 七、synchronized和Linux的mutex锁的简单比较 八、synchronized的自适应 一、乐观锁和悲观锁 乐观锁&#xff1a;在加锁之前…

mybatis 的快速入门以及基于spring boot整合mybatis(一)

MyBatis基础 MyBatis是一款非常优秀的持久层框架&#xff0c;用于简化JDBC的开发 准备工作&#xff1a; 1&#xff0c;创建sprong boot工程&#xff0c;引入mybatis相关依赖2&#xff0c;准备数据库表User&#xff0c;实体类User3&#xff0c; 配置MyBatis&#xff08;在applic…

高德地图画渐变线

高德地图画渐变线&#xff0c;思路是将线和颜色均分为多个小线段和小颜色&#xff0c;实现渐变&#xff0c;类似于下图。 如果需要多段线&#xff0c;自己循环拼一下就可以了&#xff0c;方法返回多个小线段组成的polyline数组。 /** 高德地图画渐变线* author: liyun* params…

记一次由 jedis 引发的离谱选学问题

背景 我的应用中&#xff0c;使用 jedis 作为连接 redis 的客户端&#xff0c;一直在用的好好的&#xff0c;后来有一个新的组件&#xff0c;也需要使用 redis&#xff0c;但是组件是内部封装的&#xff0c;我只能提供一个 StringReidsTempalte&#xff0c;所以我基于应用本身…

GPTs的创建与使用,自定义GPTs中的Actions示例用法 定义和执行特定任务的功能模块 通过API与外部系统或服务的交互

Name 等 Logo:自动生成 Name 介绍 Description 介绍 Instructions 要求或命令等 比如用中文回复&#xff0c;角色。 Knowledge 上传你的知识库&#xff0c;如果你有某一垂直行业的数据&#xff0c;基于数据来回答。比如我有某个芯片的指令集。 Capabilities 都要 Actions&…

ELasticsearch:什么是语义搜索?

语义搜索定义 语义搜索是一种解释单词和短语含义的搜索引擎技术。 语义搜索的结果将返回与查询含义匹配的内容&#xff0c;而不是与查询中的单词字面匹配的内容。 语义搜索是一组搜索引擎功能&#xff0c;其中包括根据搜索者的意图及其搜索上下文理解单词。 此类搜索旨在通过…

算法Day15 农场耕作

农场耕作 Description 你是一位农夫&#xff0c;拥有一块 m x n 的小农场。你打算在这块农场上耕种不同的农作物&#xff0c;以便在季节结束时获得最大的收成。 农场被分割成网格&#xff0c;每个格子代表不同的耕种区域&#xff0c;你可以选择每次向下或向右移动一格来耕作。…

解决 Element-ui中 表格(Table)使用 v-if 条件切换后,表格的列的筛选不显示了

解决方法 在每个需要使用 v-if 或 v-else 的 el-table-column 上增加 key 作为唯一标识&#xff0c;这样渲染的时候就不会因为复用原则导致列数据混乱了。关于key值&#xff0c;一般习惯使用字段名&#xff0c;也可随机生成一个值&#xff0c;只要具有唯一性就可以。

离散型制造企业MES系统行业应用

离散型制造企业具有产品种类多、生产周期长、生产过程复杂等特点&#xff0c;因此&#xff0c;采用先进的生产管理系统对于提高企业的生产效率和管理水平至关重要。其中&#xff0c;制造执行系统&#xff08;MES&#xff09;在离散型制造企业中得到了广泛应用&#xff0c; 一、…

RedisTemplate操作哈希数据

RedisTemplate操作哈希数据 概述常用方法添加哈希数据添加hashMap值判断hashkey 获取哈希数据获取属性值获取hashMap值。获取键值对。获取map键是否有值判断是否有map键。获取键。获取长度。集合方式获取值。匹配获取键值对 自增以double值大小自增。以long值大小自增。 修改删…

node.js和npm的安装与环境配置(2023最新版)

目录 安装node.js测试是否安装成功测试npm环境配置更改环境变量新建系统变量 安装node.js 1、进入官网下载&#xff1a;node.js官网 我选择的是windows64位的&#xff0c;你可以根据自己的实际情况选择对应的版本。 2、下载完成&#xff0c;安装。 打开安装程序 接受协议 选…

浅谈5G基站节能及数字化管理解决方案的设计与应用-安科瑞 蒋静

截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5G基站的能耗成为…

js 复制粘贴板,当clipboardjs 不好使怎么办?

最近项目中做一个很常见的复制粘贴的功能耽误了比较长的时间特此记录&#xff0c;在往常这个功能直接用 clipboard 做就行了&#xff0c;但是这次却发现复制功能不好使了&#xff0c;虽然走了复制成功的回调&#xff0c;但是粘贴板并没有复制的内容。代码如下 <div v-for&q…

使用LangSmith来快速学习LangChain

好风凭借力&#xff0c;送我上青云&#xff01; 什么是LangSmith LangSmith is a platform for building production-grade LLM applications. It lets you debug, test, evaluate, and monitor chains and intelligent agents built on any LLM framework and seamlessly int…

oracle12c的job没有自动执行,手动运行提示任务1%正在运行问题

有个oracle12c上的job&#xff0c;提交到dbms_job&#xff0c;不知道什么时候开始&#xff0c;停下来了&#xff0c;没有自动运行。 手动关闭这个job&#xff0c;重新打开&#xff0c;不行&#xff1b;删除JOB&#xff0c;重新创建&#xff0c;也不行。 参考拙作&#xff1a; …