HTML5简易在线画图工具

简介: 原文:HTML5简易在线画图工具继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系,这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具: 查看DEMO:HTML5简易在线画图工具 功能包括自由画笔、橡皮擦、文字填充、画三角形、画圆等,相对我这个新手来说,感觉挺难的,不过还是参考了资料慢慢“拼”出来了。
原文: HTML5简易在线画图工具

继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系,这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具:

简易在线画图工具

查看DEMO:HTML5简易在线画图工具

功能包括自由画笔、橡皮擦、文字填充、画三角形、画圆等,相对我这个新手来说,感觉挺难的,不过还是参考了资料慢慢“拼”出来了。

自由画笔的思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/******* 自由画笔 *******/
function dBrush(n){
   setStatus(actions,n,1);
   //鼠标按下的时候
   var status = 0;
   canvas.onmousedown= function (e){
     e=window.event||e;
     var sX=e.pageX- this .offsetLeft;
     var sY=e.pageY- this .offsetTop;
     can.beginPath();
     can.moveTo(sX,sY);
     status=1;
   }
   //鼠标移动的时候
   canvas.onmousemove= function (e){
     e=window.event||e;
     var eX=e.pageX- this .offsetLeft;
     var eY=e.pageY- this .offsetTop;
     if (status==1){
       can.lineTo(eX,eY);
       can.stroke();
     } else { return false }
 
   }
   //鼠标抬起的时候
   canvas.onmouseup= function (){
     can.closePath();
     status=0;     
   }
   //鼠标移出canvas画布结束画图
   canvas.onmouseout= function (){
     can.closePath();
     status=0;
   }
}

填充文字,主要用到fillText(val,x,y):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/******* 文字 *******/
function dText(n){
   setStatus(actions,n,1);
   canvas.onmousedown= function (e){
     e=window.event||e;
     var x=e.pageX- this .offsetLeft;
     var y=e.pageY- this .offsetTop;
     var val = window.prompt( '输入填充的文字' , '' );
     if (val== null ) return false ; //输入为空则返回
     can.fillText(val,x,y);
     dBrush(0); //填入文字后返回自由画笔工具
   }
   canvas.onmouseup= null ;
   canvas.onmousemove= null ;
   canvas.onmouseout= null ;
}

直线工具,主要确定起点和终点,然后lineTo(x,y)就可以了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/******* 直线 *******/
function dLine(n){
   setStatus(actions,n,1);
   //画直线,鼠标按下时,当前鼠标位置为起点
   canvas.onmousedown= function (e){
     e=window.event||e;
     var sX=e.pageX- this .offsetLeft;
     var sY=e.pageY- this .offsetTop;
     can.beginPath();
     can.moveTo(sX,sY);
   }
   //画直线,鼠标抬起时,当前鼠标位置为终点
   canvas.onmouseup= function (e){
     e=window.event||e;
     var eX=e.pageX- this .offsetLeft;
     var eY=e.pageY- this .offsetTop;
     can.lineTo(eX,eY);
     can.closePath();
     can.stroke();
   }
   canvas.onmousemove= null ;
   canvas.onmouseout= null ;
}

最后贴一个空心圆,起点坐标为圆心,鼠标移动距离为半径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/******* 空心圆圈 *******/
function dArc(n){
   setStatus(actions,n,1);
   var sX=0;  //内部的“全局标量”
   var sY=0;
   //画空心圆,鼠标按下时,当前鼠标位置为圆心
   canvas.onmousedown= function (e){
     e=window.event||e;
     sX=e.pageX- this .offsetLeft;
     sY=e.pageY- this .offsetTop;
   }   
   //画空心圆,鼠标抬起时,当前鼠标位置为外圆结束点
   canvas.onmouseup= function (e){
     e=window.event||e;
     var eX=e.pageX- this .offsetLeft;
     var eY=e.pageY- this .offsetTop;
     var dX=eX-sX
     var dY=eY-sY;
     //计算出半径
     var r = Math.sqrt(Math.pow(dX,2)+Math.pow(dY,2));
     can.beginPath();
     can.arc(sX,sY,r,0,360, false );
     can.closePath();
     can.stroke();
   }
   canvas.onmousemove= null ;
   canvas.onmouseout= null ;
}

好了,剩下的其他工具代码就不贴了,可以查看DEMO里的源代码。

目录
相关文章
|
6月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。
|
12月前
在线检测显示屏坏点html工具源码
在线检测显示屏坏点html工具源码
227 20
|
6月前
|
存储 前端开发 安全
病历单生成器在线制作,病历单生成器app,HTML+CSS+JS恶搞工具
本项目为医疗病历模拟生成器,旨在为医学教学和软件开发测试提供数据支持,严格遵守《医疗机构病历管理规定》。
|
6月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
10月前
|
数据采集 存储 调度
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
在Python网页抓取领域,BeautifulSoup和Scrapy是两款备受推崇的工具。BeautifulSoup易于上手、灵活性高,适合初学者和简单任务;Scrapy则是一个高效的爬虫框架,内置请求调度、数据存储等功能,适合大规模数据抓取和复杂逻辑处理。两者结合使用可以发挥各自优势,例如用Scrapy进行请求调度,用BeautifulSoup解析HTML。示例代码展示了如何在Scrapy中设置代理IP、User-Agent和Cookies,并使用BeautifulSoup解析响应内容。选择工具应根据项目需求,简单任务选BeautifulSoup,复杂任务选Scrapy。
207 1
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
3168 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
在线将多张图片拼接起来图工具HTML源码
在线将多张图片拼接成一张图片,多图合一并导出下载。无需本地安装软件。 下载时,使用日期时间作为文件名,规避图片文件名相同造成的覆盖问题;也能省去一部覆盖确认操作 多语言支持
419 0
在线将多张图片拼接起来图工具HTML源码
|
前端开发
Twaver-HTML5基础学习(28)工具条(添加自定义按钮_自定义事件)
这篇文章介绍了如何在Twaver-HTML5中创建工具条,添加自定义按钮,并绑定自定义事件,包括放大、缩小、占满屏幕和重置画布大小的功能。
176 11
|
小程序 数据可视化 开发工具
HTML我帮您打造拖拽可视化的WEUI小程序工具
HTML我帮您打造拖拽可视化的WEUI小程序工具
278 0
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

热门文章

最新文章