WEB绘图插件Canvas基础应用

news2024/9/21 11:14:48

一、概述

canvas 是 html5 标准中提供的⼀个标签 顾名思义是定义在浏览器上的画布,通过其强大的绘图接口,我们可以实现各种各样的图形, 炫酷的动画 ,甚至可以利用他开发⼩游戏,包括市面上很流行的数据可视化框架底层都用到了Canvas 。

二、基础

● 是⼀个HTML元素, 我们可以将它简单理解为⼀个画板, 通过Canvas提供的绘制api我们 就可以绘制出各种图形。

1、渲染上下文

getContext('2d')
getContext('webgl')

在这里插入图片描述

2、绘制图形

● 坐标系
在这里插入图片描述

a、线 (线,三角形,矩形):

● 绘制: moveTo, lineTo ,stroke

● 设置样式: lineWidth ,strokeStyle

● 路径: beginPath,closePath
在这里插入图片描述

b、弧线 (弧、圆弧/圆):

在这里插入图片描述

arcTo(x1, y1, x2, y2, radius);

在这里插入图片描述

arc(x, y, radius, startAngle, endAngle, anticlockwise);

在这里插入图片描述
在这里插入图片描述

c、贝塞尔曲线:

在这里插入图片描述
二阶:quadraticCurveTo(cpx, cpy, x, y);
在这里插入图片描述
三阶:bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
在这里插入图片描述
在这里插入图片描述

3、绘图样式

线条样式:

● lineWidth

● lineCap

在这里插入图片描述
● setLineDash

渐变

线性渐变 ctx.createLinearGradient(x0, y0, x1, y1);
径向渐变 ctx.createRadialGradient(x0, y0, r0, x1, y1, r1);
纹理样式 ctx.createPattern(image, repetition);

在这里插入图片描述

4、绘制文本

绘制方式:

● 描边

● 填充 fillText()

绘制样式:

● font 、textAlign 、direction 、textBaseline

● 阴影:shadowOffsetX 和 shadowOffsetY 、shadowBlur 、shadowColor

在这里插入图片描述

5、绘制图片

drawImage用法:

drawImage(image, dx, dy);
drawImage(image, dx, dy, dWidth, dHeight);
drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);

在这里插入图片描述

三、进阶

1、变形

a、平移 (translate) 、旋转 (rotate)、缩放 (scale)

在这里插入图片描述

b、状态的保存和恢复 (栈结构)

在这里插入图片描述

c、transform 、setTransform

● 语法:

○ transform(a, b, c, d, e, f);
在这里插入图片描述
在这里插入图片描述

2、合成

Canvas 提供了 26 种图片混排模式

重点: destination-out

xor:
在这里插入图片描述
语法: ctx.globalCompositeOperation = type;
在这里插入图片描述
3、裁剪

clip()

在这里插入图片描述

四、案例实践

1、放大镜或缩小镜 (探照灯/望远镜)

在这里插入图片描述
技术点:离屏渲染

将⼀个canvas对象绘制到另⼀个canvas对象上( 离开用户可视范围内进行渲染)

2、刮刮乐

技术点: 图像合成

利用图像合成让绘制的内容与原矩形重合部分清空
在这里插入图片描述

3、滤镜 ( 四种)

技术点:单位像素处理

这里我们主要借用 getImageData 函数 ,他返回每个像素的 RGBA 值 。借助图像处理公式, 操作像素进 行相应的 、数学运算即可。

getImageData()
putImageData()

在这里插入图片描述

五、总结

Canvas的应用非常广泛:

首先是可视化数据的应用, 比如说:百度的ECharts 、阿里的G2等图表可视化插件; 其次是游戏的应用, Canvas游戏在流畅度和跨平台方面都表现很好;还有图形编辑器的应用等等。

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

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

相关文章

【新手必看】PyCharm2023免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&a…

logback.xml

logback.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志存放路径 --><property name"log.path" value"./logs" /><!-- 日志输出格式 --><property name"log.pattern&q…

释放潜力:前端开发者转向鸿蒙的必备建议

如果需要JavaScript知识点可以去我的主要观看 大家有关于JavaScript知识点不知道可以去 &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;ajax专栏&#xff1a;ajax知识点 &#x1f389;欢迎关注&#xff1a;&am…

【离散数学】——期末刷题题库(图论应用题)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

力扣:203. 移除链表元素(Python3)

题目&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 …

Windows 截图工具①FastStone Capture ②PixPin

​ 今天说说Windows好用的载图软件&#xff1a; 2023年12月21日&#xff0c;更新新增 PixPin 2款超级好用的截图软件&#xff0c;不止是载图、编辑、录屏、Gif等好用的功能&#xff0c;本人一直也在用。 ①FastStone Capture ②PixPin 软件介绍&#xff1a;FastStone Fast…

2024年【公路水运工程施工企业安全生产管理人员】考试题及公路水运工程施工企业安全生产管理人员报名考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【公路水运工程施工企业安全生产管理人员】考试题及公路水运工程施工企业安全生产管理人员报名考试&#xff0c;包含公路水运工程施工企业安全生产管理人员考试题答案和解析及公路水运工程施工企业安全生产管理…

还在用nvm?来试试更快的node版本管理工具——fnm

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 什么是node版本管理 常见的node版本管理工具 fnm是什么 安装fnm …

4+miRNA+机器学习生信思路,常规又简单的miRNA也能发4+

今天给同学们分享一篇生信文章“Machine learning algorithms reveal potential miRNAs biomarkers in gastric cancer”&#xff0c;这篇文章发表在Sci Rep期刊上&#xff0c;影响因子为4.6。 结果解读&#xff1a; 数据来源 本研究包括348名男性&#xff08;占64.9%&#x…

解析资产管理的革新之路:从手工盘点到易点易动RFID散步式方案

随着科技的不断进步和应用&#xff0c;资产管理领域也在不断演进和革新。从最初的手工盘点到现代的智能化解决方案&#xff0c;我们目睹了资产管理的巨大变革。其中&#xff0c;易点易动RFID散步式方案以其高效、准确和便捷的特点&#xff0c;正在成为资产管理的新宠。本文将深…

Linux之yum管理器

目录 yum管理器 yum相关指令 yum list yum list | grep yum install yum remove 拓展 1.yum install -y man-pages 2.切换yum源 3.yum install -y epel-release 4. yum install -y lrzsz rz指令 sz指令 在window系统上&#xff0c;我们会在电脑自带的应用商…

Android Studio使用Genymotion

1. Genymotion介绍 GenyMotion速度之快令人发指&#xff0c;模拟效果堪比真机调试&#xff0c;支持绝大部分的模拟器功能&#xff0c;甚至包括语音&#xff0c;Google Now&#xff0c;支持eclipse, android studio。非常适合用来开发和演示效果。 2. Genymotion下载 Genymotio…

上 GitHub 热榜,星星暴涨,这个项目相继超越了 Archery, Flyway 和 Yearning

「 登上 GitHub Trending 星星超越 Yearning 键盘的敲击不停 传播开发的福音 」⚡️ Bytebase 是一款面向开发和 DBA 的一站式数据库 CI/CD 工具。它的所有代码都开源在 GitHub 上。GitHub 也是我们触达全球用户的核心阵地。虽然 GitHub Star 数一直是一个饱受争议的指标&a…

深度学习模型压缩方法:剪枝方法分类介绍

本文将介绍深度学习模型压缩方法中的剪枝,内容从剪枝简介、剪枝步骤、结构化剪枝与非结构化剪枝、静态剪枝与动态剪枝、硬剪枝与软剪枝等五个部分展开。 一、剪枝简介 在介绍剪枝之前,首先介绍过参数化这个概念,过参数化主要是指在训练阶段,在数学上需要进行大量的微分求解…

外贸函电开发信模板?写客户开发邮件方法?

如何写好外贸函电开发信&#xff1f;英语函电中的开发信怎么写&#xff1f; 在国际贸易中&#xff0c;外贸函电开发信扮演着至关重要的角色。这是一种有效的沟通工具&#xff0c;用来建立和维护与潜在客户或合作伙伴的联系。在这篇文章中&#xff0c;蜂邮将为您提供一个外贸函…

数字化营销的未来:TikTok在圣诞季的流量引爆与转化

随着数字化时代的发展&#xff0c;社交媒体平台成为品牌数字营销不可或缺的一部分。而TikTok&#xff0c;以其独特的短视频形式和强大的用户基础&#xff0c;正逐渐崭露头角。本文将探讨TikTok在圣诞季的数字化营销策略&#xff0c;着重分析流量的引爆和转化&#xff0c;以及数…

深入了解 npm 命令

目录 前言1 初始化项目2 安装依赖3 更新依赖4 发布包5 卸载包6 查看依赖7 运行脚本8 包搜索9 查看包信息结语 前言 在现代 Web 开发中&#xff0c;JavaScript 是一种至关重要的语言&#xff0c;而 npm&#xff08;Node Package Manager&#xff09;作为 Node.js 平台的默认软件…

@WebParam(name = “param“) 这个注解的作用

WebParam 是 JAX-WS&#xff08;Java API for XML Web Services&#xff09;中的一个注解&#xff0c;用于定义 Web 服务操作中参数的详细信息。这个注解主要用于 Web 服务方法的参数上&#xff0c;以提供有关如何映射和处理这些参数的额外信息。 主要用途 指定参数名称&#…

图像卷积操作

目录 一、互相关运算 二、卷积层 三、图像中目标的边缘检测 四、学习卷积核 五、特征映射和感受野 一、互相关运算 严格来说&#xff0c;卷积层是个错误的叫法&#xff0c;因为它所表达的运算其实是互相关运算&#xff08;cross-correlation&#xff09;&#xff0c;而不是…

2023_Spark_实验三十二:消费Kafka数据并保存到MySQL中

实验目的&#xff1a;掌握Scala开发工具消费Kafka数据&#xff0c;并将结果保存到关系型数据库中 实验方法&#xff1a;消费Kafka数据保存到MySQL中 实验步骤&#xff1a; 一、创建Job_ClickData_Process 代码如下&#xff1a; package examsimport org.apache.kafka.clien…