前端基础_绘制带边框矩形

news2024/11/25 12:45:36

 绘制带边框矩形

今天给小伙伴分享,如何在canvas画布中绘制一个矩形。在本例中调用了脚本文件中的draw函数进行图形描绘。该函数放置在body属性中,使用“οnlοad="draw('canvas');"”语句,调用脚本文件中的draw函数进行图像描画。在本例中draw函数的功能是把canvas画布的背景用浅蓝色涂满,然后画出一个绿色正方形,边框为红色。
用canvas元素绘制矩形的具体步骤如下。
(1)用document.getElementById方法取得canvas元素,代码如下。
var canvas = document.getElementById(id);
(2)使用canvas对象的getContext方法来获得图形上下文,同时传入使用的canvas类型,这里传递的仍然是“2d”,代码如下。
var context = canvas.getContext('2d');
(3)填充与绘制边框,用canvas元素绘制图形时,有两种方式——填充与绘制边框。填充是指填满图形内部;绘制边框是指不填满图形内部,只绘制图形的外框。canvas元素结合使用这两种方式来绘制图形。
(4)设定绘图样式(Style),在进行图形绘制时,首先要设定好绘图的样式,然后调用有关方法进行图形的绘制。所谓绘图的样式,主要是针对图形的颜色而言的,但是并不限于图形的颜色,在后面我们将会介绍如何设定颜色以外的样式,本例中主要是应用了如下两种样式。
 设定填充图形的样式
fillStyle属性——填充的样式,在该属性中填入填充的颜色值。
 设定图形边框的样式
strokeStyle——图形边框的样式。在该属性中填入边框的颜色值。
本例中的样式代码如下。
context.fillStyle = "green";
    context.strokeStyle = "red";
(5)指定线宽,使用图形上下文对象的lineWidth属性设置图形边框的宽度。在绘制图形时,任何直线都可以通过lineWidth属性来指定直线的宽度。本例中设置线宽的代码如下。
context.lineWidth=1;
(6)指定颜色值,绘图时填充的颜色或边框的颜色分别通过fillStyle属性与strokeStyle属性来指定。颜色值使用的是普通样式表中使用的颜色值。例如“red”与“blue”这种颜色名,或“#EEEEFF”这种十六进制的颜色值。
另外,也可以通过rgb(红色值、绿色值、蓝色值)或rgba(红色值、绿色值、蓝色值、透明度)函数来指定颜色的值。
本例中指定颜色的值,代码如下。
context.fillStyle = "green";
    context.strokeStyle = "red";
(7)矩形的绘制,分别使用fillRect方法与strokeRect方法来填充矩形和绘制矩形边框。这两个方法的定义如下。
context.fillRect(x,y,width,height);
    context.strokeRect(x,y,width,height);
这里的context指的是图形上下文对象,这两个方法使用同样的参数,x是指矩形起点的横坐标,y是指矩形起点的纵坐标,坐标原点为canvas画布的最左上角,width是指矩形的长度,height是指矩形的高度。通过这4个参数,矩形的大小同时也就被决定了。
本例中绘制矩形的代码如下。
context.fillRect(50,50,100,100);
    context.strokeRect(50,50,100,100);
https://www.bilibili.com/video/BV1Gv4y1Q7px/?spm_id_from=333.999.0.0&vd_source=a7816e3b2a3a67ac39dc87f6bf92421cicon-default.png?t=M85Bhttps://www.bilibili.com/video/BV1Gv4y1Q7px/?spm_id_from=333.999.0.0&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c

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

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

相关文章

大数据组件之Flink

文章目录大数据组件之Flink一.Flink简介Flink是什么?Flink的特点Flink框架处理流程Flink发展时间线Flink在企业中的应用Flink的应用场景为什么选择Flink?传统数据处理架构有状态的流式处理(第一代流式处理架构)流处理的演变&#…

实锤了,尤大妥妥的二次元迷弟 —— 聊聊 Vue 的进化历程

文章目录实锤了,尤大妥妥的二次元迷弟 —— 聊聊 Vue 的进化历程1. 前言2. 库阶段2.1 阶段发展2.2 设计重点和特征3. 框架阶段3.1 阶段发展3.2 设计重点4. 通用框架阶段4.1 阶段发展4.2 设计重点4.3 典型案例5. 编译/运行时混合阶段5.1 阶段发展5.2 设计重点5.3 框架…

五十二——六十二

五十二、JavaScript——函数简介 一、函数 函数(Function)- 函数也是一个对象 - 它具有其他对象所有的功能 - 函数中可以储存代码,且可以在需要时调用这些代码 语法: function 函数名(){ 语句。。。 } 调用函数- 调用…

drm框架介绍

Drm框架介绍 DRM是Linux目前主流的图形显示框架,相比FB架构,DRM更能适应当前日益更新的显示硬件。比如FB原生不支持多层合成,不支持VSYNC,不支持DMA-BUF,不支持异步更新,不支持fence机制等,而这…

嗅探网站视频

前置知识 MP4是我们常见的视频格式,往往我们在播放服务器视频时直接就是请求的MP4视频源。但其实这样并不好,MP4头文件[ftypmoov]较大,初始化的播放需要下载完整的头文件并进行解析,之后再下载一定长度的可播视频片段才能进行播放…

java 瑞吉外卖day4及补全功能 文件上传下载 菜品分页查询 Dto类 菜品状态修改 菜品停售以及菜品删除

文件上传下载 文件下载介绍 文件上传代码实现 服务端上传: RestController RequestMapping("/common") Slf4j public class CommonController {Value("${reggie.path}")private String basePath;//从配置文件读取设置好的basePathPostMapping…

【教程】5步免费白嫖使用Grammarly Premium高级版

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 1、使用Chrome或者Edge浏览器。 2、安装名为Cookie-Editor的谷歌Chrome扩展。 https://chrome.google.com/webstore/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm 2、打开Grammarly网站,…

DBCO-PEG-Cyanine5.5,CY5.5 PEG DBCO,二苯并环辛炔-聚乙二醇-Cyanine5.5

中文名:二苯并环辛炔-聚乙二醇-菁染料CY5.5,二苯并环辛炔-聚乙二醇-Cyanine5.5,菁染料CY5.5PEG环辛炔,花青素Cyanine5.5-聚乙二醇-二苯并环辛炔英文名:DBCO-PEG-CY5.5,DBCO-PEG-Cyanine5.5,Cyan…

位运算、递推与递归、前缀和、差分、二分

题目链接:位运算、递推与递归、前缀和、差分、二分 - Virtual Judge (vjudge.net) A.洛谷 - P2280 样例输入: 2 1 0 0 1 1 1 1样例输出: 1 分析:这道题先用二维前缀和处理一下地图,这样我们就可以在O(1)的复杂度内…

SIT-board 远程交互式白板的实现

来自上海应用技术大学的「SIT-board」团队,在七牛云校园黑客马拉松中勇夺冠军,以下是他们的参赛作品——SIT-board远程交互白板的实现过程。 需求分析 基本绘图功能 作为一个在线协作白板,离线的本地化的白板是一切功能的前提。本地白板中需…

Uniapp安卓apk原生云端打包完整过程

1.进入HbuliderX,找到菜单的发行 2.选择原生App-云打包,接着会弹出一个对话框,如图: 3.在对话框中勾选Andriod(apk包)、选择使用云端证书。 证书说明如下: (1)使用自有证书:开发者自己生成…

左偏树解决猴王问题

一 问题描述 在森林里住着 N 只好斗的猴子。开始时,猴子们彼此不认识,难免吵架,吵架只发生在互不认识的两只猴子之间。吵架发生时,两只猴子都会邀请它们中最强壮的朋友来决斗。决斗过后,两只猴子和它们的所有朋友都认…

screenviewer工具在树莓派3B+上的适配

目录 工具简介 适配初衷 第三方模块适配问题 源码代编译问题 最后完美运行如图 工具简介 屏幕截图web端展示功能、视频设备如摄像头、视频流等接入,并可web端展示。 适配初衷 这样的工具如果能完美运行在嵌入式linux上是极好的,目前仅适配了wind…

为什么你的程序跑不满CPU?——简单聊聊多核多线程

最近同事测试自己的程序,感觉处理耗时太长,一看CPU使用率,才25%。想要提高CPU使用率降低处理时长,于是向我询问。以此为契机写了这篇,聊聊多核多线程。水平有限,仅供参考。 1.单核单线程 一切开始的前提是…

CCProxy + Proxifier 通过另一台电脑访问网络

问题场景描述: 公司提供的 vpn 只提供了 windows 客户端;Mac没有客户端,而家里的 windows 电脑是多年前的旧电脑,配置不足,所以不能使用;这里整理了一种 搭建跳板机 作为中专的方式进行访问 搭建过程 1.…

OpenCV(7)-OpenCV中的滤波器

OpenCV中的滤波器 图像滤波 滤波的作用:一幅图像通过滤波器得到另一幅图像;其中滤波器又称为卷积核,滤波的过程被称为卷积 卷积的几个基本概念: 卷积核的大小: 卷积核一般为奇数,如3 * 3,5 * 5&#xf…

【DELM回归预测】基于matlab灰狼算法改进深度学习极限学习机GWO-DELM数据回归预测【含Matlab源码 1867期】

⛄一、基本极限学习机算法简介 1 核极限学习机 极限学习机(ELM)是一种含L个神经元的单隐藏层前馈神经网络(SLFN)算法,相比于其他神经网络(如BP)具有训练速度快和泛化能力强等特点。但是ELM算法是随机生成各个神经元连接权值和阈值,易造成算法的波动性和…

架构师必读 —— 逻辑模型(4)

解决问题的基本步骤 如果情绪急躁,过于钻牛角尖,坚持“这就是唯一结论”的态度,就会阻碍逻辑思考。情绪急躁、钻牛角尖的行为属短见薄识,只能导致主观臆断。一味地想“简短地传达观点”时,往往会跳过三角逻辑中的论据和…

VSCode下载和安装详细步骤

一、下载 点击 这里 到Visual Studio Code官网下载。 选择下载版本,大家按自己的电脑版本进行选择(这里我选的是Windows 64位的)。 二、安装 1. 下载好之后,双击进行安装; 2. 选择【我同意此协议】,再点…

如何快速上手react中的redux管理库

前言: 什么是redux?redux和vuex一样,都被统称为状态管理库,是核心数据存贮与分发、监听数据改变的核心所在。 可以简单说下redux和vuex的区别: 相同点 state 共享数据流程一致:定义全局state,…