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

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

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

自由画笔的思路:/******* 自由画笔 *******/

function dBrush(n){

setStatus(actions,n,1);

//鼠标按下的时候

var status = 0;

canvas.οnmοusedοwn=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.οnmοusemοve=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.οnmοuseup=function(){

can.closePath();

status=0;

}

//鼠标移出canvas画布结束画图

canvas.οnmοuseοut=function(){

can.closePath();

status=0;

}

}

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

function dText(n){

setStatus(actions,n,1);

canvas.οnmοusedοwn=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.οnmοuseup=null;

canvas.οnmοusemοve=null;

canvas.οnmοuseοut=null;

}

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

function dLine(n){

setStatus(actions,n,1);

//画直线,鼠标按下时,当前鼠标位置为起点

canvas.οnmοusedοwn=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.οnmοuseup=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.οnmοusemοve=null;

canvas.οnmοuseοut=null;

}

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

function dArc(n){

setStatus(actions,n,1);

var sX=0; //内部的“全局标量”

var sY=0;

//画空心圆,鼠标按下时,当前鼠标位置为圆心

canvas.οnmοusedοwn=function(e){

e=window.event||e;

sX=e.pageX-this.offsetLeft;

sY=e.pageY-this.offsetTop;

}

//画空心圆,鼠标抬起时,当前鼠标位置为外圆结束点

canvas.οnmοuseup=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.οnmοusemοve=null;

canvas.οnmοuseοut=null;

}

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

php在线画图,详细介绍HTML5简易在线画图工具的实现案例相关推荐

  1. HTML5简易在线画图工具

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

  2. html 衣服特效,详细介绍HTML5 3D衣服摇摆动画特效如何实现

    这又是一款基于HTML5 Canvas的3D动画杰作,它是一个可以随风飘动的3D衣服摇摆动画特效,非常逼真.当我们将鼠标滑过衣服时,衣服将会出现摇摆的动画,点击鼠标时,衣服将会更加剧烈地摆动. 在线演 ...

  3. php中文歌词,详细介绍HTML5使用Audio标签实现歌词同步的效果

    HTML5的最强大之处莫过于对媒体文件的处理,如利用一个简单的vedio标签就可以实现视频播放.类似地,在HTML5中也有对应的处理音频文件的标签,那就是audio标签.通过本文给大家介绍HTML5使 ...

  4. 官方在线会议详细介绍CISSP更新及知识域讲解

    [官方.权威]关于CISSP,您想知道的都在这里! CISSP考试大纲将于5月1日更新,同时考试费也将上调为749美元!还有什么更新和详情您需要了解? 3月30日下午2:00,CISSP官方中文在线宣 ...

  5. html5 在线 ppt 制作软件,HTML5 幻灯片相册制作工具(HTML5 Slideshow Maker)

    AnvSoft HTML5 Slideshow Maker 是一个易于使用的HTML5照片幻灯片的创建者.以往制作相册大多数采用Flash,現在已经迈入 HTML5 的时代,网页的特性也越来越丰富,如 ...

  6. HTML5设计内容,详细介绍HTML5 12个设计小技巧(图文)

    这篇文章主要为大家分享了12个不为大家熟知的HTML5设计小技巧,相信大家一定会有所收获,感兴趣的小伙伴们可以参考一下 12个不为大家熟知的HTML5设计小技巧,内容如下 1.交互上,慎用向右滑动的操 ...

  7. 迷宫html源代码自动走,详细介绍HTML5实现3D迷宫的代码案例

    功能描述: 左右方向键控制玩家的方向,上下方向键控制玩家的前进和后退. 效果预览: 实现原理: 在上面的效果预览中,可以看到右边是2D的平面地图,而左边的则是第一人称的3D视图,这两幅图的关系是非常密 ...

  8. html5画图程序,基于HTML5的Windows画图程序

    Windows 画图程序一直伴随着 Windows 各个版本,这个很简单,几乎没有什么用处的程序拥有最基本的绘图功能,很适合用来涂鸦.HTML5 的 Canvas 对象使在线绘图成为可能,虽然 HTM ...

  9. php用什么工具调试代码,详细介绍利用开源的DebugBar工具调试PHP代码(图文)

    DebugBar 是一个免费和开源的应用,能够集成至任何PHP项目中,并收集和展示分析数据. 它有没有任何依赖,支持Ajax请求,包括常用开发库的通用数据采集器和收集器. 相信用过Laravel的调试 ...

  10. 【WiFi密码破解详细图文教程】ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解-破解软件论坛-ZOL中关村在线...

    [WiFi密码破解详细图文教程]ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解-破解软件论坛-ZOL中关村在线 好了,先说下提前要准备的东东吧: 1.U盘一枚,最小1G空间.需进行格 ...

最新文章

  1. zabbix proxy 分布式监控
  2. linux iptables 如何设置允许几个 ip访问,Linux防火墙iptables限制几个特定ip才能访问服务器。...
  3. 使用Google Weather API查询天气预报
  4. HBase 在人工智能场景的使用
  5. 狗狗1岁相当于人类31岁!基于基因组甲基化图谱建立首个跨物种年龄转换公式...
  6. (58)UART外设驱动用户发送模块(三)(第12天)
  7. 俄罗斯 IT 存储空间告急,未来 2 月或将耗尽?
  8. python从入门到精通需要多久-python从入门到精通需要多久?你需要先明白这两个点...
  9. 用Excel做一个案例分析
  10. MATLAB线性规划相关函数用法
  11. 数值计算软件有哪些?一款国产软件非常亮眼。
  12. 用LabVIEW打包EXE应用文件和打包程序安装文件的方法
  13. 分享一份嵌入式软件工具清单
  14. 5类6类7类网线对比_超详细的超五类、六类、七类网线的对比
  15. 如何使用n2disk构建一个100 Gbit(无丢包)连续数据包记录器[Part3]
  16. 扇贝python课程打卡_Learning by doing——百日“扇贝打卡” 历程展望
  17. python脚本--批量下载GNSS数据
  18. 计算机网络(六)应用层
  19. 搜索引擎(大数据检索)论述[elasticsearch原理相关]
  20. 一个例子手把手抬你入门Vue2

热门文章

  1. 大数据培训(第一季) java基础-徐培成-专题视频课程
  2. Sql三张表的连接查询
  3. 龙威PS305D维修案例收集
  4. 【2022最新版】Java基础面试题总结(70道题含答案解析)
  5. python离线录音转文字软件_语音转文字工具(音频转文字助手)V2.1 最新版
  6. Electron实现Zbar开源工具解码一维码和二维码
  7. c语言单片机烧写器,单片机烧写器是什么 烧写器怎么用
  8. poi填充word,动态生成表格+LibreOffice转成pdf
  9. 输出100以内的素数
  10. html移动端弹窗,移动端弹窗