响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-4 Document

news2024/11/15 11:09:56

代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document</title>
</head>

<body>
<canvas id="cavsElem" width="400" height="600">您的浏览器不支持Canvas</canvas>
<script>
    var canvas = document.getElementById('cavsElem'); //获取画布
    var context = canvas.getContext('2d');            //准备画笔
    context.lineWidth = '10';                         //设置线条的宽度
    context.strokeStyle = '#f00';                     //设置线条的颜色
    context.lineCap = 'round';                        //设置线条的端点形状
    context.moveTo(10,120)                            //定义线条的起点坐标
    context.lineTo(50,120);                           //定义连接端点
    context.lineTo(10,150);                           //定义连接端点
    context.lineTo(50,150);                           //定义连接端点
    context.stroke();                                 //为线条描边
    //绘制蓝色的字母“z” 
    context.beginPath();                              //重置路径
    context.strokeStyle = 'blue';                     //设置线条的颜色为蓝色
    context.lineCap = 'butt';                         //定义端点平直
    context.moveTo(10,180);                           //定义初始位置
    context.lineTo(50,180);                           //定义连线端点
    context.lineTo(10,210);                           //定义连线端点
    context.lineTo(50,210);                           //定义连线端点
    context.stroke();                                 //描边路径
    //绘制粉色的字母“z” 
    context.beginPath();                              //重置路径
    context.strokeStyle = 'pink';                     //设置线条的颜色为粉色
    context.lineCap = 'square';                       //定义端点方形
    context.moveTo(10,240);                           //定义初始位置
    context.lineTo(50,240);                           //定义连线端点
    context.lineTo(10,280);                           //定义连线端点
    context.lineTo(50,280);                           //定义连线端点
    context.stroke();                                 //描边路径
    </script>
</body>
</html>

上述代码中:
第13行代码使用lineWidth属性定义线条的宽度,该属性的默认宽度为1px,取值为数值(不带单位),以像素为计量单位;
第14行代码使用strokeStyle属性定义描边的颜色,该属性的取值为十六进制颜色值或颜色英文,默认为黑色;
第16~18行代码使用lineTo(x,y)方法来定义连线端点,同时也需要定义x和y的坐标位置;
第19行代码使用stroke()方法给线条添加描边,让线条变得可见。
第24行和33行代码处分别定义了端点的形状;
第22行和31行代码处使用beginPath()方法重置了路径,这是因为在同一画布中,如果想要开始新的路径或重置当前的路径,就需要使用beginPath()方法,当出现beginPath()即表示路径重新开始。

运行效果

从上到下3个图案依次是红色、蓝色和粉色。
在这里插入图片描述
线是所有复杂图案的组成基础,想要绘制复杂的图形,首先要从绘制线开始。线由起始位置、连接端点和描边组成。设置了butt(蓝色字母)和square(粉色字母)图案的端点形状是一样的,区别在于蓝色图案比红色和粉色图案短一截,这是因为该图案没有闭合路径。我们可以在stroke()方法前使用closePath()方法来闭合路径,该方法是创建从当前点到开始点的路径。

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

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

相关文章

备战蓝桥杯---二分(基础)

何为二分&#xff1f;形象的说&#xff0c;就是单调函数求零点。 我们先对二分查找简单的分析一下&#xff08;主要是模板及易错点&#xff09; 1.找>x的第一个位置&#xff1a; 2.找<x的第一个位置&#xff1a; …

广联达-EmailAccountOrgUserService-sql注入漏洞复现

产品简介 广联达OA是一款为企业提供综合办公解决方案的软件。它集成了多种功能&#xff0c;包括文档管理、流程审批、任务分配等&#xff0c;旨在提高企业内部的工作效率和协作能力。同时&#xff0c;广联达OA还注重安全性&#xff0c;通过多种措施保护企业数据和信息的安全。…

Markdown(2篇文章学会Markdown

目录 1.文章链接&#xff1a;2.markdown可以用来解决什么问题&#xff1a;小结&#xff1a; 1.文章链接&#xff1a; Markdown&#xff08;2篇文章学会Markdown第一篇 Markdown&#xff08;2篇文章学会Markdown第二篇 2.markdown可以用来解决什么问题&#xff1a; 格式化文…

C++ 类与对象(上)

目录 本节目标 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 8.this指针 8.1 thi…

开源之力与GPT的碰撞:探索未来技术的无限可能

摘要&#xff1a; 在本文中&#xff0c;我们将探讨开源软件与GPT&#xff08;大型预训练语言模型&#xff09;的完美结合如何推动技术的飞速发展。我们将简要介绍开源文化的价值观及其对技术创新的影响&#xff0c;分析GPT系列模型在开源社区中的发展与应用&#xff0c;并通过代…

Springboot响应数据详解

功能接口 Controller下每一个暴露在外的方法都是一个功能接口 功能接口的请求路径是RequestMapping定义的路径&#xff0c;浏览器需要请求该功能则需要发出该路径下的请求。 RestController RestControllerControllerResponseBody(响应数据的注解) ResponseBody 类型&#…

使用KMP迁移Android app到IOS平台

使用KMP迁移Android app到IOS平台 如果你有一款Android app&#xff0c;你想将其迁移到IOS平台&#xff0c;但是你不熟悉Swift语言&#xff0c;那么你该如何做呢&#xff1f;辛亏JetBrains 推出 Kotlin Multiplatform 和 Compose Multiplatform &#xff0c;突然间&#xff0c…

FastBee2.0开源版正式启动

一、项目介绍 物美智能(wumei-smart)更名为蜂信物联(FastBee)。 FastBee开源物联网平台&#xff0c;简单易用&#xff0c;更适合中小企业和个人学习使用。适用于智能家居、智慧办公、智慧社区、农业监测、水利监测、工业控制等。 系统后端采用Spring boot&#xff1b;前端采用…

【java】9:多重循环控制(难重点)

介绍&#xff1a; 1)将一个循环放在另一个循环体内&#xff0c;就形成了嵌套循环。其中&#xff0c;for ,while ,do... while均可以作为外层循环和内层循环。 【建议一般使用两层&#xff0c;最多不要超过3层&#xff0c;否则&#xff0c;代码的可读性很差】 2&#xff09;实…

C语言KR圣经笔记 5.12 复杂声明

5.12 复杂声明 C 语言有时会因为声明的语法而受到谴责&#xff0c;特别是涉及函数指针的声明语法。语法试图使声明和使用一致&#xff1b;在简单的情况下它的效果不错&#xff0c;但在更复杂的情况下会让人困惑&#xff0c;因为声明不能从左往右读&#xff0c;而且括号被过度使…

C/C++编码问题研究

文章目录 一、Unicode字符集与U8/U16/U32编码二、编码1. 占字节数2. ASCII、GB2312、GBK、GB18030 以及 UTF8 的关系3. BOM4. UTF-8的存储实现 三、编译器字符集设置1. GCC语法Example 2. MSVC语法Example 三、wchar_t五、编码转换函数六、代码 & 实践1. UTF8与UTF16、UTF3…

深度学习使用python建立最简单的神经元neuron

目录 介绍 数据&#xff1a; 建模&#xff1a; 模型&#xff1a; 介绍 在深度学习中&#xff0c;神经元通常指的是人工神经元&#xff08;或感知器&#xff09;&#xff0c;它是深度神经网络中的基本单元。深度学习的神经元模拟了生物神经元的工作原理&#xff0c;但在…

单链表实现通讯录(增删查改)

前言 之前写了很多次通讯录&#xff0c;一次比一次复杂&#xff0c;从静态到动态&#xff0c;再到文件操作&#xff0c;再到顺序表&#xff0c;今天要好好复习一下单链表&#xff0c;于是乎干脆用单链表再写一遍。 首先我们之前已经用单链表写过他的增删查改了&#xff0c;于…

IS-IS:04 DIS

IS-IS 协议只支持两种网络类型&#xff0c;即广播网络和点到点网络。与 OSPF 协议相同&#xff0c; IS-IS 协议在广播网络中会将网络视为一个伪节点 &#xff08; Pesudonde&#xff0c;简称 PSN&#xff09;&#xff0c;并选举出一台DIS &#xff08;Designated IS&#xff09…

【学习】傅里叶变换分析与理解

傅里叶级数的本质是将一个周期的信号分解成无限多分开的&#xff08;离散的&#xff09;正弦波&#xff0c;但是宇宙似乎并不是周期的。 理解频域、空域&#xff08;时域&#xff09; 时域&#xff08;空域&#xff09;是从时间方向看过去的得到的图像&#xff0c;而频域是从频…

laravel框架项目对接小程序实战经验回顾

一.对接小程序总结 1.状态转换带来的问题&#xff0c;如下 问题原因&#xff1a;由于status 传参赋值层级较多&#xff0c;导致后续查询是数组但是传参是字符串&#xff0c; 解决方案&#xff1a;互斥的地方赋值为空数组&#xff0c;有状态冲突的地方unset掉不需要的参数 2参…

4核16G幻兽帕鲁服务器优惠价格表,阿里云和腾讯云报价

幻兽帕鲁服务器价格多少钱&#xff1f;4核16G服务器Palworld官方推荐配置&#xff0c;阿里云4核16G服务器32元1个月、96元3个月&#xff0c;腾讯云幻兽帕鲁服务器服务器4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64…

双非本科准备秋招(9.2)——力扣哈希

1、383. 赎金信 跟昨天的题大同小异&#xff0c;因为只有26个字母&#xff0c;所以可以建个有26个坑位的数组。 做完昨天的题目&#xff0c;这个题没啥新意。 class Solution {public boolean canConstruct(String ransomNote, String magazine) {int[] hashTable new int[…

shell脚本5 函数 数组

函数 试题1 查看版本 如果想更方便&#xff0c;可以建立一个专门存函数的文件 将func.sh里面的命令都移到func文件夹里面&#xff0c;在脚本里面执行文件夹更方便 输入echo $?反馈的结果都是0&#xff0c;都认为是正确的 无法使用$?去检验是否正确&#xff0c;所以要在后面增…

python 基础知识点(蓝桥杯python科目个人复习计划27)

今日复习内容&#xff1a;基础算法中的递归 1.介绍 递归&#xff1a;通过自我调用来解决问题的函数递归通常把一个复杂的大问题层层转化为一个与原问题相似的规模较小的问题来解决 递归要注意&#xff1a;&#xff08;1&#xff09;递归出口&#xff1b;&#xff08;2&#x…