canvas特效代码详解(2)

 canvas是一个就基于像素的画图h5元素。

 利用canvas做一个如下描述所示的动态图形:当鼠标点下去时开始绘图,在鼠标结束时完成一个矩形,当再一次点击时重复第一次的绘图步骤。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <style type="text/css">
 7             canvas{
 8                 border: 1px solid #000;
 9             }
10         </style>
11     </head>
12     <body>
13         <canvas id="canvas" width="400" height="400"></canvas>
14         <script type="text/javascript">
15             var canvas = document.getElementById("canvas");
16             var context = canvas.getContext("2d");
17 //            当鼠标点击时执行的函数
18             canvas.οnmοusedοwn=()=>{
19 //                得到鼠标在canvas上的位置
20                 var x = event.clientX - canvas.offsetLeft;
21                 var y = event.clientY - canvas.offsetTop;
22                 var x1 = 0;
23                 var y1 = 0;
24 //                当鼠标移动时
25                 document.onmousemove = () =>{
26 //                    清除原来的矩形
27                     context.clearRect(0,0,canvas.width,canvas.height);
28 //                    得到鼠标绘制结束时矩形的位置
29                     x1 = event.clientX - canvas.offsetLeft;
30                     y1 = event.clientY - canvas.offsetTop;
31 //                    鼠标完成绘制时的矩形的宽和高
32                     context.strokeRect(x,y,(x1-x),(y1-y));
33                 }
34 //                鼠标离开后
35                 document.onmouseup = ()=>{
36                     document.onmousemove = null;
37                     document.ommousedown = null;
38                 }
39             }            
40         </script>
41     </body>
42 </html>

效果图,可在规定的矩形内绘制任何宽高的矩形

 

转载于:https://www.cnblogs.com/flyingLcode/p/7731908.html

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

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

相关文章

阿里云三维可视化使用初体验

title: 阿里云三维可视化使用初体验tags: 物联网开发BIMcategories:物联网本文主要的目标是使用阿里云的云产品 - 物联网套件三维可视化 开始 准备工作 进入下载页面下载页面&#xff0c;点击“模型编辑器下载”安装模型编辑器下载安装完毕&#xff0c;启动模型编辑器下载&…

hp laser103 属性没有配置项_(常见解决方法)UEditor报错“后端配置项没有正常加载,上传插件不能正常使用”...

&#xff08;常见解决方法&#xff09;UEditor报错“后端配置项没有正常加载&#xff0c;上传插件不能正常使用”_向来萧瑟也无畏-CSDN博客​blog.csdn.net报错信息详见此文的“排错过程&&错误信息”→ueditor无法上传图片_向来萧瑟也无畏-CSDN博客3种解决方法1.大小写…

WinForm(十二)画图

在.NET中&#xff0c;画图主要是通过Graphics类实现的&#xff0c;这个类主要通过两类方法完成画图&#xff0c;一类是DrawXXX&#xff0c;画各种线条图形&#xff1b;另一类是FillXXX,用各种形状&#xff0c;填充各种图形。Graphics是画板&#xff0c;Draw各个方法是各种盏笔&…

从4个方面简单介绍SaaS

你了解什么是SaaS吗&#xff1f;SaaS有什么优势&#xff1f;选择SaaS平台要注意哪些要素&#xff1f;在这里&#xff0c;怡海软件将针对这些问题进行简单介绍&#xff1a; 什么是SaaS&#xff1f;SaaS是Software-as-a-Service&#xff08;软件即服务&#xff09;的简称&#xf…

终于找到你!如何将前端console.log的日志保存成文件?

本篇文章来自一个需求&#xff0c;前端websocket会收到各种消息&#xff0c;但是调试的时候&#xff0c;我希望把websoekt推送过来的消息都保存到一个文件里&#xff0c;如果出问题的时候&#xff0c;我可以把这些消息的日志文件提交给后端开发区分析错误。但是在浏览器里&…

基于 .NET 6 开发的开源远程终端工具

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;有用的工具&#xff0c;不要忘记关注。今天介绍一个非常实用的工具 mRemoteNG&#xff0c;这是一个基于 .NET 6 开发的远程终端软件&#xff0c;开源免费&#xff0c;不用担心版权和软件费用…

第六次作业—例行报告

本周PSP 进度条 代码累计折线图 博文累计折线图 本周饼状图 转载于:https://www.cnblogs.com/zej87/p/7738895.html

Tomcat7/8开启WebDAV的支持

WebDAV是一种超文本传输协议&#xff0c;Tomcat默认是支持WebDAV的&#xff0c;且默认为禁用状态。 更多详细信息&#xff0c;请参考&#xff1a; https://zh.wikipedia.org/wiki/WebDAV http://www.webdav.org/ 开启步骤如下&#xff1a; 1、在Tomcat的webapps目录下新建webda…

免费分享一些.NET Core比较优秀的社区资料和微软官方资料

这次小编所分享的这套笔记手册&#xff0c;主要是分享一些.NET Core比较优秀的社区资料和微软官方资料。已经把所有的重要知识点进行了完整的归类和整理&#xff0c;可以让大家更清晰和快速的学习.NET Core&#xff0c;不浪费任何多余的时间&#xff01;全网首发&#xff01;相…

python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...

问题引入在小强学PythonOpenCV之&#xff0d;1.4.2裁剪一节&#xff0c;我们使用的是numpy数组切片功能实现图片区域的裁剪。那么&#xff0c;如果我们想要裁剪图像中任意形状的区域时&#xff0c;应该怎么办呢&#xff1f;答案是&#xff0c;使用掩膜(masking)。但是这一节我们…

51 Nod 1670 打怪兽

1670 打怪兽lyk在玩一个叫做“打怪兽”的游戏。游戏的规则是这样的。lyk一开始会有一个初始的能量值。每次遇到一个怪兽&#xff0c;若lyk的能量值>怪兽的能量值&#xff0c;那么怪兽将会被打败&#xff0c;lyk的能量值增加1&#xff0c;否则lyk死亡&#xff0c;游戏结束。若…

QQ协议调试器 QQDebugger

QQ协议老变&#xff0c;为了分析协议&#xff0c;单用抓包工具还是不够的&#xff0c;还是得需要很好的调试工具。在网上找了几个调试工具&#xff0c;易用性均欠佳&#xff0c;不得已自己开发了一个 QQDebugger&#xff0c;不敢专美&#xff0c;特意发布出来。QQDebugger 在功…

Uptime-Kuma 一个轻量的开源监控工具

点击蓝字 关注我们你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;有用的工具&#xff0c;不要忘记关注。今天给大家介绍一个开源的监控工具 Uptime Kuma, 主要用来监控 Web 以及网络, 和 Prometheus 相比, 它是轻量的, Uptime Kuma 是基于…

SpringBoot实战之SpringBoot自动配置原理

SpringBoot 自动配置主要通过 EnableAutoConfiguration, Conditional, EnableConfigurationProperties 或者 ConfigurationProperties 等几个注解来进行自动配置完成的。EnableAutoConfiguration 开启自动配置&#xff0c;主要作用就是调用 Spring-Core 包里的 loadFactoryName…

如何健康地跑步?

最近某司高管跑步 28 公里后猝死&#xff0c;被各大媒体报道&#xff0c;每次这种悲剧发生&#xff0c;而且还跟跑步扯上关系&#xff0c;总是让人心痛。通过报道了解到&#xff0c;这位高管酷爱跑马拉松&#xff0c;身体素质和运动能力肯定是强于普通人的&#xff0c;但还是遭…

vs2008C1902程序数据库管理不匹配

大清早打开vs2008,出现这么诡异的错&#xff0c; 删了一个dll的就好了。如图

全新升级的AOP框架Dora.Interception[3]: 基于特性标注的拦截器注册方式

在Dora.Interception中按照约定方式定义的拦截器可以采用多种方式注册到目标方法上。本篇文章介绍最常用的基于“特性标注”的拦截器注册方式&#xff0c;下一篇会介绍另一种基于&#xff08;Lambda&#xff09;表达式的注册方式&#xff1a;全新升级的AOP框架Dora.Interceptio…

全新升级的AOP框架Dora.Interception[4]: 基于表达式的拦截器注册

基于特性标注的拦截器注册方式仅限于将拦截器应用到自己定义的类型上&#xff0c;对于第三方提供的类型就无能为力了。对于Dora.Interception来说&#xff0c;拦截器注册本质上建立拦截器与一个或者多个目标方法之间的映射&#xff0c;所以最笨的方式就是利用反射的方式得到表示…

C语言程序设计第三次作业

&#xff08;一&#xff09;改错题 计算f(x)的值&#xff1a;输入实数x&#xff0c;计算并输出下列分段函数f(x)的值&#xff0c;输出时保留1位小数。 输入输出样例1&#xff1a;   Enterr x: 10.0   f(10.0) 0.1 输入输出样例2&#xff1a;   Enter x: 234   f(234.0…

fpga mysql_FPGA的一些琐碎知识整理

1.生产FPGA的厂家有&#xff1a;ALTERAXILINXATCELLatticeps:Altera和Xilinx主要生产一般用途FPGA&#xff0c;其主要产品采用SRAM工艺Actel主要提供非易失性FPGA&#xff0c;产品主要基于反熔丝工艺和FLASH工艺ps: 熔丝&#xff0c;顾名思义&#xff1a;把丝熔掉&#xff0c;反…