canvas分享,从入门到入门。

开始之前

canvas是一个可以使用脚本在其中绘制图形的 HTML 元素.它本身并不具备绘图能力,需要配合JavaScript使用

用途

  • 游戏应用
  • 特效字体
  • 相册,幻灯片
  • 股票行情等动态图像
  • 思维图以及图形编辑器等在线可视化工具

基本特性

  1. canvas元素会初始化宽度为300像素和高度为150像素
  2. canvas元素通过浏览器渲染后,是透明的,不可见的
  3. canvas元素可以使用CSS来定义大小,但在绘制时图像会伸缩以适应它的框架尺寸:如果CSS的尺寸与初始画布的比例不一致,它会出现扭曲。
  4. canvas元素原始坐标原点为canvas画布的左上角

基本特性3介绍

见canvas.html代码说明

上述例子中,用css设置的width为450,height为300,对应默认的画布大小300×150,宽高比例分别为1.5和2,
所以我们设置的矩形的宽(100px)高(100px)实现显示的会是
宽:100px×1.5=150px;
高:100px×2=200px;

效果如下图:
请添加图片描述

绘制线段

  1. 开启轨迹路径
  2. 设置线段的起始点
  3. 设置线段的终点
  4. 设置线段的样式
  5. 开始绘制线段

图形绘制

绘制矩形

ctx.fillRect(x,y,width,height) strokeRect(x,y,width,height)

  • x: 矩形起点横坐标
  • y :矩形起点纵坐标
  • width: 矩形长度
  • height: 矩形高度

清除矩形区域

ctx.clearRect(x,y,width,height)

  • x:清除矩形起点横坐标
  • y:清除矩形起点纵坐标
  • width:清除矩形长度
  • height:清除矩形高度

绘制圆弧

ctx.arc(x, y, radius, starAngle,endAngle, anticlockwise)

  • x:圆心的x坐标
  • y:圆心的y坐标
  • radius: 圆的半径
  • straAngle: 开始角度
  • endAngle: 结束角度
  • anticlockwise: 是否逆时针,(true)为逆时针,(false)为顺时针
    请添加图片描述

渐变

线性渐变

var grans = ctx.createLinearGradient(xStart,yStart,xEnd,yEnd)

  • xstart: 渐变开始点x坐标
  • ystart: 渐变开始点y坐标
  • xEnd: 渐变结束点x坐标
  • yEnd: 渐变结束点y坐标

线性渐变颜色 grans.addColorStop(offset,color)

  • offset:设定的颜色离渐变结束点的偏移量(0~1)
  • color:绘制时要使用的颜色

径向渐变

var cles = ctx.createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)


- xStart: 开始发散圆心x坐标 - yStart: 开始发散圆心y坐标 - radiusStart: 开始发散圆的半径 - xEnd: 结束发散圆心的x坐标 - yEnd: 结束发散圆心的y坐标 - radiusEnd: 结束发散圆的半径

径向渐变颜色rg.addColorStop(offset,color)

  • offset:设定的颜色离渐变结束点的偏移量(0~1)
  • color:绘制时要使用的颜色

发散偏移量的图
请添加图片描述

绘制文字

填充文字:context.fillText(text,x,y)

绘制文字轮廓 context.strokeText(text,x,y)


  • text: 要绘制的文字

  • x: 文字起点的x坐标轴

  • y: 文字起点的y坐标轴

      ctx.font:设置字体样式ctx.textAlign:水平对齐方式start、end、right、centerctx.textBaseline:垂直对齐方式top、hanging、middle、alphabetic、ideographic、bottomvar length=ctx.measureText(text):计算字体宽度(px)length.width:表示字体的宽度
    

canvas变换:

1. 平移 ctx.translate(x,y)
2. 缩放 ctx.scale(x,y)
3. 旋转 ctx.rotate(angle)


**平移** x: 坐标原点向x轴方向平移x y: 坐标原点向y轴方向平移y **缩放** x: x坐标轴按x比例缩放 y: y坐标轴按y比例缩放 **旋转** angle: 坐标轴旋转x角度(角度变化模型和画圆的模型一样) **两个好用的方法** - ctx.save(): 保存在save()之后所做变换之前的坐标系状态. - ctx.restore():恢复save()保存的坐标系状态 关于这两个方法的使用见 demo.html ## 图形移动 ctx.clearRect(x,y,width,height) 清除画布的操作,用来清除canvas标签上面的所有内容

贝塞尔曲线

  • ctx.quadraticCurveTo() 绘制二次贝塞尔曲线,拥有四个参数
    参数1,2代表曲线的起点和终点之间点的坐标,参数3,4代表终点坐标
  • bezierCurveTo() 绘制三次贝塞尔曲线,拥有六个参数
    参数1,2,3,4代表曲线起点和终点之间的两个点坐标,参数5,6代表终点坐标

二阶贝塞尔动画
请添加图片描述
三阶贝塞尔动画

请添加图片描述

贝塞尔曲线在CSS动画中的有使用,就是在动画的运动过程中,控制速率的变化。

  1. CSS动画中,使用贝塞尔曲线作为值的属性有两个,transition-timing-function,animation-timing-function,格式为cubic-bezier(P1x,P1y,P2x,P2y),实际应用中的代码实例 transition: all 3.0s cubic-bezier(0.75, 0.25, 0.25, 0.75)。

  2. 我们大多看到的是,ease,linear,ease-in-out 这样的属性值,其实它们也是贝塞尔曲线值,只不过是官方预定义的,以简化明了的名称,替代了复杂的数值书写方式。
  3. 以下是一些预定义名称对应的曲线值:
  • ease: cubic-bezier(0.25, 0.1, 0.25, 1.0)
  • linear: cubic-bezier(0.0, 0.0, 1.0, 1.0)
  • ease-in: cubic-bezier(0.42, 0, 1.0, 1.0)
  • ease-out: cubic-bezier(0, 0, 0.58, 1.0)
  • ease-in-out: cubic-bezier(0.42, 0, 0.58, 1.0)

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

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

相关文章

Windows驱动调试方法

单步调试驱动 驱动的调试不能直接在本机上进行,而是要放在虚拟机(或其它设备)中。这是因为在内核模式下,一个断点的触发将会停下整个系统而不只是单个进程。 在前面的文章里,使用了DbgPrint函数来进行日志的输出&…

西门子S7-1200 PLC的配方功能

配方相关指令介绍工控人加入PLC工业自动化精英社群 配方功能主要使用4个指令,READ_DBL和WRIT_DBL用于对配方数据块的读写,RecipeExport和RecipeImport用于配方数据块和CSV文件之间的转化,下面分别介绍这4个指令的使用。 READ_DBL / / / / …

【更新】全国地级市胡焕庸线、长江经济带、地域划分数据

本次数据是地级市的胡焕庸线、长江经济带、地域划分数据: 1、胡焕庸线是一条经典的地理分割线,它区分了中国人口分布的稠密区与稀疏区,东南部地区人口密集,西北部地区则较为稀疏 2、长江经济带是指沿长江流域分布的经济区域&…

C++ STL容器(三) —— 迭代器底层剖析

本篇聚焦于STL中的迭代器,同样基于MSVC源码。 文章目录 迭代器模式应用场景实现方式优缺点 UML类图代码解析list 迭代器const 迭代器非 const 迭代器 vector 迭代器const 迭代器非const迭代器 反向迭代器 迭代器失效参考资料 迭代器模式 首先迭代器模式是设计模式中…

hadoop大数据平台操作笔记(上)

Hadoop介绍 Hadoop是一个开源的分布式系统框架,专为处理和分析大规模数据而设计。它由Apache基金会开发,并通过其高可靠性、高扩展性、高效性和高容错性等特性,在大数据领域发挥着重要作用。以下是对Hadoop的详细解释及其用途的概述&#xf…

Mybatis进阶

一、日志管理 mybatis主要使用logback来管理日志,具体内容之前的java进阶有说,链接如下 java基础进阶——log日志、类加载器、XML、单元测试、注解、枚举类_java logs是什么意思-CSDN博客 二、动态SQL 动态SQL指的是根据参数数据动态组织SQL的技术。 …

Qt获取本机Mac地址、Ip地址

一、简述 今天给大家分享一个获取本机IP地址和Mac地址的方法,经过多次测试,台式机、笔记本等多个设备,暂时没有发现问题。 由于很多时候本地安装了虚拟机、蓝牙、无线网卡或者其他设备等,会有多个Mac地址,所以需要进…

SQL Server2012保姆安装教程----带你快速上手数据库创建

目录 1.前言 2.安装准备 3.参考文章 4.安装过程 5.快速上手 5.1如何连接服务器 5.2创建数据库 5.3添加新的文件 5.4属性介绍 5.5创建表的引入 1.前言 我之前使用的就是mysql数据库,这个数据库使用的比较多,我学的初期也是这个; 但是…

虚拟机使用FileZilla软件实现文件互传

软件版本:FizeZilla 3.63.2 VirtualBox7.0.20 1.设置桥接模式(网卡) 2.查看ip 在控制台输入ifconfig 3.在终端打开控制台安装FTP服务 sudo apt-get install vsftpd 等待软件自动安装,安装完成以后使用 VI命令打开 /etc/vsftpd.conf,命令…

Kali 联网

VMware 中分三种网络模式 桥接模式:默认余宿主机 VMnet0 绑定,像一台独立机 NAT 模式:默认余宿主机 VMnet8 绑定,需要通过物理机连接外网 仅主机模式:默认余宿主机 VMnet1 绑定,只能与物理机通信 VMware…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveVelocity

机器自动化控制器——第三章 轴指令 6 MC_MoveVelocity变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 动作示例▶动作示例▶梯形图▶结构文本(ST) MC_MoveVelocity 使用伺服驱动器的位置控制模式,进行…

股价已暴涨64000%,估值比英伟达还高,Costco股票还能投资吗?

猛兽财经核心观点: (1)自1985年上市以来,Costco的股价已经上涨了64,000%以上。 (2)该公司已成为了美股市场上最被高估的公司之一(估值比英伟达还高)。 (3)猛兽…

八大排序——万字长文带你剖析八大排序(C语言)

本篇文章主要介绍八大排序的思想和具体实现,也会分析具体的时间复杂度和空间复杂度,提醒一些容易出现的坑和实现一些不同版本的排序,以及这些不同排序之间的效率分析 目录 1.插入排序 1.1直接插入排序 1.1.1 直接插入排序的思想&#xff…

linux 下的静态库与动态库

目录 一、介绍 1、静态库 2、动态库 二、操作 1、静态库 2、动态库 3、使用库文件 (1)方法一 (2)方法二 (3)方法三 一、介绍 1、静态库 静态链接库实现链接操作的方式很简单,即程序文…

【2024W38】肖恩技术周刊(第 16 期):白嫖AI的最佳时段

周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率,每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

同等学力申硕英语网课如何选择

很多考生想知道同等学力申硕英语网课如何选择,小编告诉大家,首先明确自己的学习目标和需求是为了提高口语、阅读、写作还是听力能力? 只有明确了自己的学习目标和需求,才能更好地选择适合自己的课程和平台。 二、选择知名品牌和口碑良好的平…

怎么一键更换PPT模板?2个做PPT必备的办公神器推荐!

在主打快节奏的当下,一份精美的PPT演示文稿往往能够为你赢得更多的关注和机会。但不可否认的是,制作一份高质量的PPT并非易事,特别是当你需要频繁更换PPT模板以应对不同场合时,根本抽不出时间来逐一修改。 本文将为大家介绍2款强…

什么是上层封禁海外流量

上层封禁海外流量(Upper-layer Blocking of Overseas Traffic)是一种网络安全策略,旨在通过在网络传输的上层进行流量控制和过滤,从而阻止来自海外的恶意流量或不必要的访问。这一措施主要用于防止分布式拒绝服务(DDoS…

多线程——“死锁”

目录 前言 一、一个线程,一把锁 1.问题介绍 2.可重入锁 二、两个线程,两把锁 1.问题介绍 2.解决方式 三、N个线程,M把锁 1.哲学家就餐问题 2.解决方式 结尾 前言 “死锁”是多线程代码中一类常见的问题,加锁是能解决线…

java算法OJ(1)位运算

目录 1.前言 2.正文 2.1位运算符号 2.1俩数相除 2.1.1题目 2.1.2示例 2.1.3题解 2.2二进制求和 2.2.1题目 2.2.2示例 2.2.3题解 2.3只出现一次的数字 2.3.1题目 2.3.2示例 2.3.3题解 2.4只出现一次的数字(进阶版) 2.4.1题目 2.4.2示例…