2.1 HTML5 - Canvas标签

文章目录

  • 引言
  • Canvas标签概述
    • 定义
    • 实例:创建画布
  • 理解Canvas坐标系
    • 概述
    • 实例:获取Canvas坐标
  • 获取Canvas环境上下文
    • 概述
    • 实例:获取Canvas上下文
    • 设置渐变色效果
  • 结语

在这里插入图片描述

引言

大家好,今天我们要一起探索HTML5中一个非常有趣且强大的特性——Canvas。我们将通过几个实例来了解如何使用Canvas标签,获取其上下文,绘制基本图形,以及实现渐变效果。让我们开始吧!

Canvas标签概述

定义

<canvas>标签是HTML5中用于绘制图形的元素。它提供了一个空白画布,通过JavaScript进行绘制。该标签本身不绘制任何图形,而是作为图形的容器。

实例:创建画布

我们来看一个简单的例子,创建一个200x150像素的画布,并给它一个紫色的边框。

<canvas id="myCanvas" width="200" height="150" style="border: 1px solid #ff00ff;">
    您的浏览器不支持HTML5 canvas标签~
</canvas>

理解Canvas坐标系

概述

Canvas元素使用一个二维坐标系统来确定画布上的绘制位置。原点(0,0)位于画布的左上角,水平向右为x轴正方向,垂直向下为y轴正方向。

实例:获取Canvas坐标

我们可以使用JavaScript来捕获鼠标在Canvas上的坐标,并在页面上显示它们。

<div id="box" style="width: 200px; height: 200px; border: 1px solid #ff0000"
     onmousemove="getCoordinates(event)" onmouseout="clearCoordinates()">
</div>
<div id="xy_coordinates"></div>

<script>
    function getCoordinates(e) {
        var x = e.clientX;
        var y = e.clientY;
        document.getElementById("xy_coordinates").innerHTML = "Coordinates: (" + x + ", " + y + ")";
    }
    
    function clearCoordinates() {
        document.getElementById("xy_coordinates").innerHTML = "";
    }            
</script>

获取Canvas环境上下文

概述

Canvas环境上下文,通常指的是Canvas 2D渲染上下文,是HTML5 Canvas中用于绘制图形、文本、图像和其他对象的主要接口。

实例:获取Canvas上下文

让我们获取Canvas的2D上下文,并绘制一个简单的黄色矩形。

<canvas id="myCanvas" width="200" height="150" style="border: 1px solid #ff00ff;">
    您的浏览器不支持HTML5 canvas标签~
</canvas>

<script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.fillStyle = "#ffff00";
    ctx.fillRect(10, 10, 180, 130);
</script>

设置渐变色效果

我们可以创建一个线性渐变,从蓝色到黄色,并填充一个矩形。

<script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var gradient = ctx.createLinearGradient(0, 0, c.width, c.height);
    gradient.addColorStop(0, 'blue');
    gradient.addColorStop(1, 'yellow');
    ctx.fillStyle = gradient;
    ctx.fillRect(10, 10, 180, 130);
</script>

结语

通过今天的实战,我们学习了如何使用HTML5 Canvas来绘制基本图形,理解其坐标系,并获取上下文以绘制更复杂的图形。Canvas是一个强大的工具,可以用来创建各种动态和交互式的图形和动画。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南

文章简介&#xff1a; 将本地开发的 Node.js 项目部署到线上服务器是开发者常见的工作流程之一。在这篇文章中&#xff0c;我将详细介绍如何将本地的 Node.js 服务通过宝塔面板&#xff08;BT 面板&#xff09;上线。宝塔面板是一个强大的服务器管理工具&#xff0c;具有简洁的…

基于SSM党务政务服务热线管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;部门管理&#xff0c;办事信息管理&#xff0c;信息记录管理&#xff0c;系统管理 前台账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;部门&#xff0c;信息…

金融信创基金行业案例:某基金公司AD信创替代方案建设分享

缺失国产域控统一认证&#xff0c;导致业务信创升级受阻 某基金管理公司在办公场景拟建设信创 OA 系统、信创邮件系统以及信创服务器、桌面终端。但原有的 AD 域既无法接管新购的信创资产&#xff0c;亦不符合全栈信创建设要求。因此&#xff0c;该基金单位必须选择一套稳定可…

H-TCP 的效率和公平性

昨晚带安孩楼下玩耍&#xff0c;用手机 desmos 作了一组 response curve 置于双对数坐标系&#xff1a; 长肥管道的优化思路都很类似&#xff0c;cwnd 增长快一点&#xff1a; BIC TCP&#xff1a;二分查找逼近 capacity&#xff1b;CUBIC TCP&#xff1a;上凸曲线逼近 capa…

PHP爬虫:获取商品销量数据的利器

在电子商务的激烈竞争中&#xff0c;掌握商品销量数据是商家洞察市场动态、制定销售策略的关键。通过PHP爬虫技术&#xff0c;我们可以高效地获取这些数据&#xff0c;为商业决策提供支持。 PHP爬虫的优势 PHP作为一种流行的服务器端脚本语言&#xff0c;拥有跨平台运行、丰富…

2025年天津仁爱学院专升本动画化学工程与工艺专业对应专业限制

天津仁爱学院2025年高职升本科招生专业对应范围目录&#xff08;动画化学工程与工艺&#xff09; 专业名称按照教育部发布的《职业教育专业目录(2021年)(更新时间&#xff1a;2024年1月)》为准&#xff0c;按更新前专业名称录取的学生以下表中原专业名称相符可申报&#xff0c…

SpringBoot项目启动报错:命令行太长解决

文章目录 SpringBoot项目启动报错&#xff1a;命令行太长解决1. 第一种方法1. 第二种方法1-1 旧版本Idea1-2 新版本Idea 3. 重新启动SpringBoot项目即可解决 SpringBoot项目启动报错&#xff1a;命令行太长解决 报错信息&#xff1a; 1. 第一种方法 1. 第二种方法 找到项目…

4 -《本地部署开源大模型》在Ubuntu 22.04系统下部署运行ChatGLM3-6B模型

在Ubuntu 22.04系统下部署运行ChatGLM3-6B模型 大模型部署整体来看并不复杂&#xff0c;且官方一般都会提供标准的模型部署流程&#xff0c;但很多人在部署过程中会遇到各种各样的问题&#xff0c;很难成功部署&#xff0c;主要是因为这个过程会涉及非常多依赖库的安装和更新及…

安防综合管理系统EasyCVR视频汇聚平台Linux环境下如何测试UDP端口是否正常开启?

视频汇聚EasyCVR安防监控视频系统采用先进的网络传输技术&#xff0c;支持高清视频的接入和传输&#xff0c;能够满足大规模、高并发的远程监控需求。平台灵活性强&#xff0c;支持国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大…

C++ 中的友元(Friend)用法详解

什么是友元&#xff08;Friend&#xff09;&#xff1f;&#x1f46d; 友元 (C) | Microsoft Learn 在C中&#xff0c;友元&#xff08;Friend&#xff09;是一种机制&#xff0c;允许外部函数或类访问某个类的私有&#xff08;private&#xff09;或保护&#xff08;protecte…

【Spring篇】Spring中的Bean管理

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;Spring IOC容器 &#x1f6a…

【火山引擎】 Chat实践 | 大模型调用实践 | python

目录 一 前期工作 二 Doubao-pro-4k_test实践 一 前期工作 1 已在火山方舟控制台在线推理页面创建了推理接入点 ,接入大语言模型并获取接入点 ID。 2 已参考安装与初始化中的步骤完成 SDK 安装和访问凭证配置

Java面向对象编程基础(二)

Java面向对象编程基础二 一、package与import关键字的使用1.说明2.包的作用3.JDK中主要的包4. import5.import关键字的使用 二、封装性1.为什么要封装&#xff1f;2.如何封装?3.作用4.权限修饰符的权限大小5.案例 三、构造器1 构造器的使用说明2 案例: 四、实例变量赋值过程1 …

【优选算法】(第四十四篇)

目录 ⻜地的数量&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 地图中的最⾼点&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⻜地的数量&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;Le…

在wsl2下将Ubuntu从一个盘移动到其他盘

参考文章&#xff1a; wsl下将Ubuntu从c盘移动到其他盘 WSL数据迁移(迁移ext4.vhdx) WSL 系统迁移&#xff08;2&#xff09;&#xff0c;导入虚拟机磁盘映像 .vhdx ext4/fs WSL2迁移后默认登陆用户为root的解决方案 操作过程&#xff1a; 1.查看当前系统中wsl分发版本 …

MySQL数据库从入门到精通 第2讲 启动 停止 连接

MySQL数据库从入门到精通 第2讲 启动 停止 连接 MySQL数据库的初步使用 在上一小节我们已经简单了解了数据库与一些相关概念 接下来我们来学习下如何使用一下MySQL 1 MySQL的启动 MySQL服务是随着电脑开机自动启动的&#xff0c;在windows中MySQL的服务名称默认就是MySQL8…

从一个事故中理解 Redis(几乎)所有知识点

作者&#xff1a;看破 一、简单回顾 事故回溯总结一句话&#xff1a; &#xff08;1&#xff09;因为大 KEY 调用量&#xff0c;随着白天自然流量趋势增长而增长&#xff0c;最终在业务高峰最高点期占满带宽使用 100%。 &#xfeff; &#xfeff; &#xff08;2&#xff…

【JavaScript】LeetCode:76-80

文章目录 76 有效的括号77 最小栈78 字符串解码79 每日温度80 柱形图中最大的矩形 76 有效的括号 栈三种不匹配的情况&#xff1a; ( [ { } ] ( )&#xff0c;最左边的"("多余&#xff0c;即字符串遍历完了&#xff0c;栈还不为空。[ { ( } } ]&#xff0c;中间"…

机器学习中空间和时间自相关的分析:从理论基础到实践应用

空间和时间自相关是数据分析中的两个基本概念,它们揭示了现象在空间和时间维度上的相互依赖关系。这些概念在各个领域都有广泛应用,从环境科学到城市规划,从流行病学到经济学。本文将探讨这些概念的理论基础,并通过一个实际的野火风险预测案例来展示它们的应用。 图1: 空间自相…

el-radio 点击报错 Element with focus: inputAncestor with aria-hidden....

一、序言 浏览器版本影响的问题&#xff08;与代码无关&#xff0c;可能是web或浏览器相关协议更新导致&#xff09;&#xff0c;不影响功能的使用. 翻译&#xff1a;元素上的Blocked aria-hidden&#xff0c;因为刚刚接收焦点的元素不能对辅助技术用户隐藏。避免在焦点元素或…