Canvas画布详解API代码演示

news2024/11/24 20:28:18

Canvas

.<canvas>标签:画布标签,本身不具备绘图能力,可以通过脚本(JS)来实现

width:设置画布宽度,默认为300px
height:设置画布高度,默认为150px

Canvas API:提供通过JavaScript<canvas>上绘图的功能 – 动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面

Canvas API主要实现2D效果,3D需要由WebGL API实现

二、基本图形绘制

1.canvasObj.getContext("2d"):返回一个用来在画布上绘图的方法和属性的对象

2.ctx.beginPath():开始/重新绘制路径

3.ctx.closePath():结束绘制路径

4.ctx.moveTo(x,y):设置路径的起点

5.ctx.lineTo(x,y):设置路径的另一个点

6.ctx.stroke():绘制路径(空心,描边)

7.ctx.fill():填充路径(实心)

8.ctx.arc():绘制圆形/圆弧路径

9.ctx.rect():绘制矩形路径

10.ctx.strokeRect():绘制空心矩形

11.ctx.fillRect():绘制实心矩形

12.ctx.strokeStyle:设置stroke()调用时的相关属性(线条的颜色,渐变)

13.ctx.lineWidth:设置线条粗细(px)

14.ctx.fillStyle:设置fill时的相关属性(填充的颜色,渐变色)

15.设置渐变色

//创建渐变对象
var gradient = ctx.createLinearGradient(渐变开始的x坐标,渐变开始的y坐标,渐变结束的x坐标,渐变结束的y坐标);  
gradient.addColorStop(0,color); //渐变开始的颜色
[gradient.addColorStop([0~1],color);]//添加中间的渐变颜色及位置
gradient.addColorStop(1,color); //渐变结束的颜色

16.ctx.strokeText():绘制空心文字

17.ctx.fillText():绘制实心文字

18.ctx.font:设置文字相关属性

19.ctx.drawImage():绘制图像

20.ctx.scale():缩放画布

21.ctx.rotate():旋转画布

22.ctx.translate():平移画布

注意:缩放、旋转、平移实际是改变原点的位置,只对变换之后的绘制有影响;画布显示区域为未变换之前的位置不变

23.ctx.clearRect():清除矩形区域内的像素(清空画布)

24.ctx.save():保存绘图状态 – 不能保存绘制的图形

25.ctx.restore():返回保存的绘图状态 – restore()save()对应,restore()只能小于等于save()次数

下面是一段代码样例演示,可以直接复制粘贴看效果

<!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>canvas</title>
</head>

<body>
  <canvas width="300" height="300"></canvas>
</body>

</html>
<script>
  var canvas = document.querySelector("canvas")//画布必须设置
  var ctx = canvas.getContext("2d");//画布必须设置
  var arr = 300;
  var i = 1;
  var arrstyle = "#0416FF,#2791FB,#5ACEFB,#4E966B,#9CBF16"
  arrstyle = arrstyle.split(",")//变为数组
  for (var i = 1; i < arr; i++) {//纵向循环
    // console.log(i)//1--299

    for (var j = 1; j < arr; j++) {//横向循环
      // console.log(j)//1--299
      var s = Math.round(Math.random() * 5);//随机数
      ctx.beginPath();//开始绘制
      ctx.strokeStyle = arrstyle[s];//填充颜色
      ctx.moveTo(j, i);//绘制路径
      ctx.lineTo(j + 1, i);//结束坐标
      ctx.stroke();//填充描边
      ctx.closePath();//结束绘制
    }
  }
  ctx.clearRect(50, 50, 200, 200);//清除画布(x,y,长,宽)
  ctx.fillStyle = "red";//颜色
  ctx.fillText("字和他的坐标60,60", 60, 60);

</script>

在这里插入图片描述

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

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

相关文章

【手把手】分布式定时任务调度解析之xxl-job

1、xxl-job好像很火&#xff1f; 在之前我写的讲解Quartz中有介绍过&#xff0c;Quartz有差不多二十年的历史&#xff0c;调度模型已经非常成熟了&#xff0c;而且很容易集成到Spring中去&#xff0c;用来执行业务任务是一个很好的选择。但是越早的设计存在的问题也越明显&…

自适应均衡matlab仿真,对比RLS,LMS以及NLMS的均衡前后星座图效果,调制采用4QAM,16QAM,64QAM

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在无线通信系统中&#xff0c;由于多径效应及码间干扰的存在&#xff0c;信号误码率会升高。均衡技术是一种对抗码间干扰的重要技术。本文将介绍LMS均衡和RLS均衡两种均衡算法。在线性和非线性均…

[附源码]Python计算机毕业设计Django颐养天年辅助平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

水溶性CY7-COOH|Cas1353546-78-7|水溶CY7-羧酸

水溶性CY7-COOH|Cas1353546-78-7|水溶CY7-羧酸 CAS号&#xff1a;1628790-40-8&#xff08;氯化物&#xff09;、1628897-82-4&#xff08;不含阴离子&#xff09;、2241083-63-4&#xff08;内盐&#xff09; 外观&#xff1a; 绿色粉末 分子量&#xff1a;519.12 分子式&…

sa-token进阶

介绍sa-token实际应用的高阶用法。 文章目录路由拦截鉴权绑定角色权限标识角色校验/权限校验测试角色标识测试权限标识进阶用法路由拦截鉴权 定义配置类SaTokenConfigure->实现WebMvcConfigurer&#xff0c;设置一个只对login请求放通的拦截器&#xff1a; Configuration …

商密SIG月度动态:文件加密支持SM4算法、Anolis 8.8将默认集成 | 龙蜥 SIG

商密软件栈 SIG 目标&#xff1a;基于Anolis Linux&#xff0c;在整个系统软件层面&#xff08;包括硬件&#xff0c;固件&#xff0c;bootloader&#xff0c;内核以及 OS&#xff09;实现以商密算法为主的全软件栈商密操作系统&#xff0c;结束一直以来商密软件生态碎片化的状…

B站李沐讲论文笔记Resnet

研一学生笔记&#xff0c;若有看官&#xff0c;笔下留情 作者 Kaiming He Xiangyu Zhang Shaoqing Ren&#xff08;在蔚来居然&#xff09; Jian Sun&#xff08;导师&#xff09; Microsoft Research 摘要&#xff1a; 我们提出一个网络&#xff0c;他可以简化网络的训练&…

【 Apifox】Apifox的前置操作与后置操作

Apifox官网地址&#xff1a;http://apifox.cn/a103abcc 文章目录一、断言二、提取变量三、数据库操作结语一、断言 后置操作支持添加断言&#xff0c;可对接口返回的数据&#xff08;或响应时间&#xff09;设置断言&#xff0c;判断是否符合预期。 设置断言&#xff1a; 运行…

与客户共解难题:BPM如何高标准国产化?

作为深耕中国本土BPM市场近二十年的老牌企业&#xff0c;上海斯歌已服务超过700家大型及超大型企业&#xff0c;在医药、汽车汽配、智能制造、房地产等行业积淀了深厚的服务能力&#xff0c;从始至终斯歌都在思考&#xff1a;如何以最佳的服务能力解决客户需求&#xff0c;成就…

Express 学习 - 02-中间件应用-urlencoded解析

请求模拟 什么是中间件&#xff1f; 中间件的本质是传递给express的一个回调函数&#xff1b;这个回调函数接受三个参数&#xff1a;请求对象&#xff08;request对象&#xff09;&#xff1b;响应对象&#xff08;response对象&#xff09;&#xff1b;next函数&#xff08;在…

用Rust写的Turbopack,比Vite快20倍?

日前&#xff0c;Vercel正式宣布推出新的包装工具Turbopack。Vercel声称这是用Rust编写的Webpack的继任者。在大型应用程序中&#xff0c;它的速度是Vite的10倍&#xff0c;是Webpack的700倍。维特的维护者对此表示怀疑。 Vercel发布新的开源工具Turbopack Vercel是Next。js框…

【数模】层次分析法

对于同一层次中的指标&#xff0c;通过两两比较&#xff0c;构造出判断矩阵&#xff0c;记为A。 aij表示因素i对因素j的重要性比较结果&#xff0c;可采用1-9的量化比例标度来反映其重要程度。 1&#xff1a;指标两个相比&#xff0c;A比B同等重要 3&#xff1a;指标两个相比…

E. Permutation Game(game)

Problem - E - Codeforces 两个玩家正在玩一个游戏。他们有一个整数1&#xff0c;2&#xff0c;...&#xff0c;n的排列组合&#xff08;排列组合是一个数组&#xff0c;其中从1到n的每个元素正好出现一次&#xff09;。这个排列组合没有按升序或降序排序&#xff08;即排列组合…

YOLO系列目标检测算法——YOLOS

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

概率编程使我们能够实现统计模型&#xff0c;而不必担心技术细节。这对于基于MCMC采样的贝叶斯模型特别有用。 最近我们被客户要求撰写关于Stan的研究报告&#xff0c;包括一些图形和统计输出。 R语言中RStan贝叶斯层次模型分析示例stan简介 Stan是用于贝叶斯推理的C 库。它…

十、Docker 复杂安装之3主3从redis集群配置

假设公司现在1-2亿条数据需要缓存,单机单台设备肯定扛不住的,这个时候就需要分布式存储,用redis如果落地呢?本期就带着大家搭建一个3主3从redis集群。 1、拉取redis6.0.8镜像 涉及命令:docker pull redis:6.0.8 实例: 2、创建6个redis容器实例 涉及命令: docker ru…

k8s远程debug

k8s远程debug 1、方案1 方案1是不行的&#xff0c;因为k8s的ingress走的7层协议。 1.1、应用 启动debug端口 java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -server -Xms1024m -Xms1024m -jar /opt/app/server.jarnetstat -ntlp1.2、配置k8s的网络和域…

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口(10)

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口&#x1f499;&#x1f353; 文章目录Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口&#x1f499;&#x1f353;1、概述&#x1f41b;&#x1f986;2、实现效果&#x1f605;&#x1f64f;3、实现功能&a…

m通过matlab实现遥测信道主要影响因素分析

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遥测技术是指被测对象的状态参数进行超远距离测量&#xff0c;并将测量的数据通过特殊的通信方式发送给地面接收站的一种技术。整个遥测发送接收系统称为遥测系统&#xff0c;而发送遥测信号所通…

LaTeX教程(一)——LaTeX介绍以及导言详解

文章目录1. Latex 介绍2. LaTeX基础2.1 导言区2.2 正文区3. 导言详解3.1 设置时间、作者、日期3.2 全局设置4. 文件组织1. Latex 介绍 什么是LATEX &#xff1f;LATEX 是一种格式。为免误会&#xff0c;初次接触这一概念的读者可以粗略地将 LATEX 理解成是对 TEX 的一层封装。…