【前端就业课 第一阶段】HTML5 零基础到实战(十一)canvas 基础

注意:手机(APP)打开,内容显示更佳,不会的私聊博主即可
想要拿代码或加入学习计划(** 博主会监督你并且教你写文章 **)的拉到最下面(PC端Web打开)加博主即可,目录也在最下面。

参加1_bit博主前端学习计划发文时在头部记得加上本专栏链接,示例如下:

我已加入 1_bit 博主的免费前端 站起来 学习计划,专栏链接:https://blog.csdn.net/a757291228/category_11609526.html

一、canvas

🐶1_bit:其实现在我们已经学完大部分的基础内容了,马上学到 CSS 就可以开始实战了。

👸小媛:那么快吗?

🐶1_bit:对呀,咱们这一节是第一个阶段的最后的一篇文章,之后的话是以 CSS 为主了,然后剩下的 HTML 内容需要结合 CSS 进行讲解;后面还会有专门的 JavaScript 课程将会更为详细的讲解 JavaScript。

👸小媛:喔,明白了。

🐶1_bit:那这一节课咱们就简单的使用 js 来画画吧?

👸小媛:哈?可以画画吗?

🐶1_bit:对的,咱们使用 HTML5 的 canvas 来画画。

👸小媛:是使用 JavaScript 进行图像绘制?

🐶1_bit:对的。

👸小媛:那什么是 canvas 呢?

🐶1_bit:顾名思义 canvas 就是一块画布,咱们在上面可以绘制图像。

👸小媛:还真是字面意思。

🐶1_bit:那咱们现在就开始吧。

二、canvas 基础绘制线段

🐶1_bit:在 html 中,用 canvas 标签表示画布,如下代码所示。

<!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>1_bit 的前端实战课程11 javascript</title><style>canvas{background-color:bisque;}</style>
</head>
<body><canvas id="tCanvas" width="500" height="500"></canvas>
</body>
</html>

🐶1_bit:像以上代码中,咱们可以发现我在 head 部分添加了一个 style,在 style 中添加了一个 canvas 的背景色样式,是为了给予这个canvas背景色方便查看。

👸小媛:不然就是跟界面一样的颜色然后就不好观察了吗?

🐶1_bit:对的,是这个意思,你还可以看到这个canvas 我还给予了宽高和ID,这些是要给予到的一些基本属性。

👸小媛:明白了。

🐶1_bit:接下来咱们看看这个 canvas 如何进行使用,如以下代码示例。

<!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>1_bit 的前端实战课程11 javascript</title><style>canvas{background-color:bisque;}</style>
</head>
<body><canvas id="tCanvas" width="500" height="500"></canvas><script>var canvas=document.getElementById('tCanvas');//通过 getElementById 取得对应的 canvas 对象var context=canvas.getContext('2d');//表示需要绘制图像的类型为2dcontext.beginPath();//充值画布路径,你画的线段、线条都是路径context.moveTo(100,100);//下笔点移动到某一个位置context.lineTo(200,200);//从下笔点绘制一条线段到 xy 为 200 处context.stroke();//开始绘制</script>
</body>
</html>

👸小媛:一下子好多东西,感觉都看不懂了。

🐶1_bit:没关系,咱们慢慢来,首先查看第一条代码:

var canvas=document.getElementById('tCanvas');

🐶1_bit:以上代码中,document.getElementById('tCanvas');你应该明白,表示得到 id 为 tCanvas 的这个 dom 节点,这个节点为一个 canvas 标签,那么此时变量 canvas 就表示了这个 canvas 标签,这点明白吧?

👸小媛:明白,意思就是这是个 canvas 对象了,可以使用这个对象所对应的一些功能。

🐶1_bit:你乱猜的吧?不过,猜对了。我们接着查看下一句代码:

var context=canvas.getContext('2d');

🐶1_bit:这一句代码中的 canvas 对象就是指对应的画布对象,因为刚刚使用了 getbyID 函数获取到了对应的节点,此时这个 canvas 就表示这个节点通过 getContext 指定当前所需要绘制的图片类型,在此传入了参数 2d,表示接下来以 2d 绘制为主。

👸小媛:明白了。

🐶1_bit:再接着代码是:

context.beginPath();

🐶1_bit:这段代码表示“清空画布”,或者说是重置画布的内容,让画布干净些。

👸小媛:这个明白,檫黑板一样的道理。

🐶1_bit:接着到代码:

context.moveTo(100,100);

🐶1_bit:这段代码表示将下笔的点移动到 xy 值为 (100,100) 处。

👸小媛:这个意思?

🐶1_bit:对呀,move to 意思不是说移动到哪里吗?

👸小媛:原来如此。

🐶1_bit:接下来代码:

context.lineTo(200,200);

🐶1_bit:的意思也很简单,就是你之前使用 moveTo 找到了一个洛必点,那么现在 lineTo 就是画一条直线,你要把这一条直线画到哪,那 200,200 就是 xy 的坐标。

👸小媛:那么简单。

🐶1_bit:那你认为现在的线段已经开始“绘制”了吗?

👸小媛:绘制了呀,刚刚不是都代码写了吗?

🐶1_bit:还差一步,最后一个代码:

context.stroke();

🐶1_bit:才是表示开始绘制,你可以理解成之前所写的代码只是你在描述你要绘制的步骤,最后一步代码则是表示将那些你要绘制的路径进行绘制。

👸小媛:明白了,所以最后一句代码不能少。

🐶1_bit:是的。

三、矩形绘制

🐶1_bit:接下来咱们来看看怎么绘制一个矩形吧?

👸小媛:一条一条线段的画?

🐶1_bit:哪有那么麻烦,很简单的,直接使用一个方法 fillRect,下面是一个完整的示例。

<!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>1_bit 的前端实战课程11-1 javascript</title><style>canvas{background-color:bisque;}</style>
</head>
<body><canvas id="tCanvasa" width="500" height="500"></canvas><script>var canvas=document.getElementById('tCanvasa');var context=canvas.getContext('2d');context.beginPath();context.fillRect(10,10,300,400);</script>
</body>
</html>

👸小媛:不用 stroke 方法了吗?

🐶1_bit:对的,在这里直接使用 fillRect 方法绘制一个矩形,其中 10,10 是你的落笔点,或者你理解为起始绘制坐标,随后的 300 和 400 分别是对应的宽和高,这样的话就可以绘制出如下的矩形了。

在这里插入图片描述
👸小媛:不过黑色好丑,怎么改颜色?

🐶1_bit:那你只需要添加 fillStyle 属性即可,例如 context.fillStyle = "#FF0000";  。
在这里插入图片描述
🐶1_bit:那么绘制出来的图像将会按照你给予的颜色进行填充。
在这里插入图片描述

👸小媛:那我不想填充颜色呢?

🐶1_bit:那你只需要将 fillRect 方法替换成 strokeRect 方法即可,fillRect 是填充绘制矩形 strokeRect 则是不填充:
在这里插入图片描述
🐶1_bit:绘制的结果如下:
在这里插入图片描述
👸小媛:那怎么样指定一个颜色是线条颜色呢?

🐶1_bit:只需要给予 strokeStyle 属性设置一个颜色即可,例如 context.strokeStyle = "#FF0000";
在这里插入图片描述
🐶1_bit:这样的话就可以绘制出指定颜色的矩形了。
在这里插入图片描述

三、三角形绘制

👸小媛:那三角形怎么绘制?

🐶1_bit:要绘制三角形我们需要搞懂线段的绘制的概念,咱们看以下代码。

<body><canvas id="tCanvasa" width="300" height="300"></canvas><script>var canvas=document.getElementById('tCanvasa');//通过 getElementById 取得对应的 canvas 对象var context=canvas.getContext('2d');//指定了您想要在画布上绘制的类型context.lineTo(20, 20);context.lineTo(20, 170);context.lineTo(170, 170);context.lineTo(20, 20);context.stroke();</script>
</body>

🐶1_bit:以上代码中,首先把落笔点放在了xy均为20处,接下来绘制一条线段到 20,170 处,那么此时肯定是一条垂直的直线,接着再从20,170 处绘制一条直线到 170,170 处,那么此时就有了三角形的两条边,接着再从 170,170 处返回最先落笔点,那么此时三角形绘制完毕。
在这里插入图片描述
👸小媛:原来落笔点就是你绘制的的线段的最后坐标处呀。

🐶1_bit:对的,不过你注意,一定要在路径编写完代码后添加 stroke 方法。

👸小媛:明白了,那怎么填充颜色呢?

🐶1_bit:填充颜色很简单,你只需要添加 fill 方法即可:context.fill();
在这里插入图片描述
在这里插入图片描述
👸小媛:接下来我该问如何改变填充色了。

🐶1_bit:填充色使用 fillStyle ,例如 context.fillStyle = "#FF0000";,要注意线段需要闭合才可以填充颜色哟。
在这里插入图片描述
👸小媛:明白了。

目录

【前端就业课 第一阶段】HTML5 零基础到实战(十一)canvas 基础
【前端就业课 第一阶段】HTML5 零基础到实战(十)JavaScript基础一篇入门
【前端就业课 第一阶段】HTML5 零基础到实战(九)列表
【前端就业课 第一阶段】HTML5 零基础到实战(八)表单详解
【前端就业课 第一阶段】HTML5 零基础到实战(七)文字及图片样式
【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解
【前端就业课 第一阶段】HTML5 零基础到实战(五)基础元素
【前端就业课 第一阶段】HTML5 零基础到实战(四)伪类与伪元素
【前端就业课 第一阶段】HTML5 零基础到实战(三)一篇文CSS基础入门
【前端就业课 第一阶段】HTML5 零基础到实战(二)超链接
【前端就业课 第一阶段】HTML5 零基础到实战(一)基础代码结构详解

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

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

相关文章

【遥感数字图像处理教程】理论基础知识目录(5章全)

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 遥感数字图像的处理&#xff0c;是对遥感数字图像的计算机处理。与工业和医学数字图像不同&#xff0c;遥感数字图像类型更为多样&#xff0c;内容更为复杂。因此&#xff0c;遥感数字图像的处理&#xff0c;不仅需要掌握…

MonoRail学习笔记十一:页面控件的填充和验证

Mono提供很多组件可以方便的处理页面&#xff1a;可以自动将后台的值填充到页面&#xff0c;可以自动进行Javascript验证&#xff0c;可以自动在后台验证等。这些功能都是比较实用的&#xff0c;可以减少很多开发 FormHelper是用来对应html页面中Form内的tag的&#xff0c;可以…

JavaBean的详细及引用

1.JavaBean实际是具有统一接口格式的java类 2.JavaBean的组成&#xff1a;属性(Properties)、方法(Method)、事件(Events) 3.一个JavaBean的例子(该例子是用的Simple属性<属性在以后说>) //我遵循的习惯是类名大写&#xff0c;包名小写package com;//意思是将 FirstBean这…

驱动开发实战之TcpClient

场景模拟假设你有一批非标设备需要对接&#xff0c;你需要根据设备方提供的协议&#xff0c;为IoTGateway开发驱动&#xff0c;进行数据交互。文章比较长也可以到官网会有更好的体验&#xff0c;地址:http://iotgateway.net/docs/iotgateway/driver/tcpclient请先浏览上一篇驱动…

【遥感数字图像处理实验】Erdas版详细图文实验教程(8实验全)

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 遥感数字图像的处理&#xff0c;是对遥感数字图像的计算机处理。与工业和医学数字图像不同&#xff0c;遥感数字图像类型更为多样&#xff0c;内容更为复杂。因此&#xff0c;遥感数字图像的处理&#xff0c;不仅需要掌握…

WEBAPI 增加身份验证 (OAUTH 2.0方式)

1&#xff0c;在Webapi项目下添加如下引用&#xff1a;Microsoft.AspNet.WebApi.OwinOwinMicrosoft.Owin.Host.SystemWebMicrosoft.Owin.Security.OAuthMicrosoft.Owin.Security.CookiesMicrosoft.AspNet.Identity.OwinMicrosoft.Owin.Cors2&#xff0c; 在项目下新建Startup类…

无代码iVX编程实现简单 小蜜蜂 经典游戏

首先咱们打开 iVX 的在线编辑器&#xff1a;https://editor.ivx.cn/ 随后选择相对定位&#xff0c;咱们选择2D游戏类型制作一个简单小蜜蜂游戏&#xff1a; 接着咱们创建一个物理世界&#xff0c;并且将页面布局如以下&#xff1a; 以上布局中&#xff0c;矩形为模拟飞机、…

【无人机航空摄影测量精品教程】目录:Pix4d、EPS、CC、PhotoScan、Godwork项目化作业流程及注意事项汇总

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 该专栏为目前最为热门的无人机航测内外业项目&#xff0c;主要内容包括&#xff1a;无人机航测外业作业流程&#xff08;像控点布设、航线规划、仿地飞行、航拍&#xff09;和内业数据处理软件&#xff08;Pix4d、CC、EP…

WPF 基础控件之 Slider 样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButtonSlider 实现下面的效果1&#xff09;Slider来实现动画&#xff1b;Grid嵌套 Border并设置S…

SQL 通过syscolumns.xtype动态查找指定数据类型字段所包含的数据

表中太多列&#xff0c;只想查找某些比如&#xff0c;数据类型为varchar的字段的数据。 思路&#xff1a;1、先获取列名&#xff1a; select * from syscolumns where id(select max(id) from sysobjects where xtypeu and nametest_A)2、查找指定数据类型&#xff0c;xtype就…

css案例学习之span边框实现的特殊效果

bottom left bottom right top left top right 配合颜色来使用&#xff0c;实现一些神奇的效果 #menu a span{height:0;width:0;/*border-top:solid 6px #fff;border-left:solid 6px #f90;*//*border-top:solid 6px #fff;border-right:solid 6px #f90;*//*border-bottom:solid …

网页版消消乐快速实现,无代码吗iVX 真那么简单?

最近没事想做个消消乐&#xff0c;然后听说 iVX 免费了&#xff0c;所以又跑去看看 iVX 了&#xff0c;就用一个无代码来看看消消乐怎么玩吧。 首先咱们打开 iVX 的在线编辑器&#xff1a;https://editor.ivx.cn/ 随后咱们不需要游戏类型也可以制作一个消消乐游戏&#xff1a…

虚拟化记录--No.1

近段时间&#xff0c;会花些时间做关于系统虚拟化的工作。所以会做一些这样的记录。相信很多东西不会特别成体系&#xff0c;每个人因为关注的不同而记录和学习的重点也会有比较大的出入。这篇是NO.1(注意不是TOP 1 )真的是由于对于ORACLE很有感觉&#xff0c;所以上手去做的也…

C# Java间进行RSA加密解密交互

这里&#xff0c;讲一下RSA算法加解密在C#和Java之间交互的问题&#xff0c;这两天纠结了很久&#xff0c;也看了很多其他人写的文章&#xff0c;颇受裨益&#xff0c;但没能解决我的实际问题&#xff0c;终于&#xff0c;还是被我捣鼓出来了。 首先&#xff0c;介绍一下写这代…

【Microstation】三维建模基础及软件入门到精通实验教程目录

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 MicroStation是一款非常不错的二维和三维设计软件&#xff0c;由奔特力&#xff08;Bentley&#xff09;工程软件系统有限公司开发的一款软件。在CAD设计上该软件是和AutoCAD是齐名的软件&#xff0c;其专用的文件格式是…

无代码iVX编程实现简单魂斗罗

首先咱们打开 iVX 的在线编辑器&#xff1a;https://editor.ivx.cn/ 随后咱们选择2D游戏类型制作一个简单魂斗罗游戏&#xff1a; 随后咱们开始创建一个物理世界&#xff0c;不并且在物理世界之下创建一个一个图片添加物体属性&#xff0c;在物体属性中更改对应的属性内容&am…

【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 Python语言是目前很火热的语言&#xff0c;极大的促进了人工智能发展。你知道在ArcGIS中也会有python的身影吗&#xff1f;事实上&#xff0c;在ArcGIS中使用Python会起到事半功倍的效果&#xff0c;大大提高工作效率&am…

Android使用C/C++来保存密钥

Android使用C/C来保存密钥本文主要介绍如何通过native方法调用取出密钥&#xff0c;以替代原本直接写在Java中&#xff0c;或写在gradle脚本中的不安全方式。为什么要这么做 如果需要在本地存储一个密钥串&#xff0c;典型的方式有 1. 直接写在java source code中 2. 写在gradl…

无代码iVX编程实现简单跳跃超级玛丽游戏

首先咱们打开 iVX 的在线编辑器&#xff1a;https://editor.ivx.cn/ 随后咱们选择2D游戏类型制作一个简单跳跃游戏&#xff1a; 接下来创建几个图片&#xff0c;并且添加物体&#xff0c;如图所示&#xff1a; 在此需要更改对应称重地面的阻尼值&#xff0c;让其能够缓慢降落…

【三维激光扫描】实验01:环境搭建CAD2014+StonexSiScan软件安装

目 录 一、CAD2014简体中文版安装1. 安装过程2. 激活过程二、Si-Scan安装1. 主程序安装2. 驱动安装一、CAD2014简体中文版安装 1. 安装过程 双击安装包:AutoCAD_2014_Simplified_Chinese_Win_64bit_dlm.sfx.exe,进行自解压。 解压完成后,如下图所示,点击【安装】。 接受许…