Zwibbler—前端Canvas绘图工具使用记录
本人第一次发博客,用意在于记录自己在开发过程中用到的实用工具并分享出来,写的可能不好,请大家多多包涵!!!
基于Canvas的一个前端绘画工具。具体功能本人暂未深究。主要在项目中的应用场景如下:
1.将Canvas画板植入前端
2.用户可通过左侧的画笔选项工具选择画笔在画板上绘图
3.绘图完成后点击页面中的提交按钮可将绘制后的画板以jpg格式提交到服务器中
废话不多说,在此简述一下如何实现上述几点:
引入Zwibbler的JS文件,我个人引入的是官网的zwibbler-demo.js
首先,将Canvas画板植入前端
1.页面写一个div
<div id="zwibbler" style="margin-left:auto;margin-right:auto;border:2px solid red;width:1000px;height:800px;"></div>
2.引入zwibbler-demo.js到项目中,并在script脚本中初始化Zwibbler
<script src="~/css/Zwibbler/zwibbler.js"></script>
<script type="text/javascript">
var zwibbler = Zwibbler.create("#zwibbler", {
defaultBrushWidth: 5,//默认画笔宽度(以像素为单位)
showCopyPaste: false,//确定是否在内置工具栏上显示复制/粘贴按钮
showArrowTool: false,//确定是否在内置工具栏中显示箭头工具
showTextTool: false,//确定是否在内置工具栏中显示文本工具
showShapeBrushTool: true,//确定是否在内置工具栏中显示魔术形状画笔工具
showLineTool: false,//确定是否在内置工具栏中显示线条工具
});
</script>
内置工具栏:初始化Zwibbler画板时会在左侧有一列工具栏,如图:
至此,Zwibbler画板植入完成
其次,用户可通过左侧的画笔选项工具选择画笔在画板上绘图
大家可自行测试工具绘制样式。(在触摸设备也可使用);
然后,绘图完成后点击页面中的提交按钮可将绘制后的画板以jpg格式提交到服务器中
这个功能的话是我在官方文档中根据文档实现的。
1.页面提交按钮:
<input id="tijiao" type="button" onclick="tiJiao()" style="background-image: url(../../css/Zwibbler/Submit.png); width: 204px; height: 85px; position: absolute; left: 1316px; top: 850px; border: 0px;" />
onclick事件代码:
<script>
function tiJiao()
{
var dataUrl = zwibbler.save("png");
var bbt = window.prompt("请输入您的姓名", "");
if (bbt) {
$.ajax({
type: 'post',
url: '/Demo/UploadImg',
async: true,
data: { 'dataURL': dataUrl, 'imgName': bbt },
dataType: 'json',
success: function (res) {
alert("提交完成~");
}
})
}
else if (bbt === "") {
alert("请输入姓名");
}
else {
alert("您取消了提交~");
}
}
</script>
@*因为客户需求,我在此处加入了prompt弹框,用户绘画完成点击提交后会触发弹框,如果不输入姓名将不会执行ajax方法把图片提交至服务器。*@
zwibbler.save()为画板导出为图片的方法,我这里选择导出为png格式的图片。程序使用MVC框架,所以异步提交到服务器的动作方法,上传至服务器的动作方法在此就不贴出来了,网上一搜一大堆很详细
Zwibbler这个绘图工具特别强大,大家可以在官网上边的开发人员文档查看到此工具的更多属性。我这里也贴一些我自己使用的其他属性的代码以及效果图供大家参考。有兴趣的同学可以到开发文档查看。传送门
<input type="button" onclick="onSave()" style="background-image:url(../../css/Zwibbler/timeSave.png);width:204px;height:85px;position:absolute;left:420px;top:850px;border:0px;"/>
<input id="loadButton" type="button" onclick="onLoad()" disabled="disabled" style="background-image: url(../../css/Zwibbler/readSave.png); width: 204px; height: 85px; position: absolute; left: 644px; top: 850px; border: 0px;"/>
<input id="qingkong" type="button" onclick="qingKong()" style="background-image: url(../../css/Zwibbler/restart.png); width: 204px; height: 85px; position: absolute; left: 868px; top: 850px; border: 0px;"/>
<input id="xiangpi" type="button" style="background-image: url(../../css/Zwibbler/erase.png); width: 204px; height: 85px; position: absolute; left: 1092px; top: 850px; border: 0px;"/>
<script>
var saved = null;
function onSave()
{
saved = zwibbler.save("zwibbler3");
$("#loadButton").removeAttr("disabled");
}
function onLoad()
{
zwibbler.load("zwibbler3", saved);
}
function qingKong()
{
zwibbler.newDocument();
}
$("#xiangpi").click(function () {
zwibbler.useBrushTool("erase", 20);
});
</script>
Zwibbler—前端Canvas绘图工具使用记录的更多相关文章
- canvas绘图工具
关于canvas绘图,在html页面上太方便了.当然刚开始还是入了不少坑,用了比如jcanvascript等三方插件.真实效果反而不理想,后来就没用插件. 下面是实现效果,可以在线绘制工地图然后传给后 ...
- 前端自动化构建工具gulp记录
一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...
- HTML5 canvas 在线画笔绘图工具(二)
Canvas+Javascript 带图标的工具条制作 TToolbar 工具条是由一个TToolbar对象和两个按钮对象(TImageButton.TColorButton)组成,因为之前我大部分时 ...
- HTML5 canvas 在线画笔绘图工具(一)
HTML5 canvas 在线画笔绘图工具(一) 功能介绍 这是我用Javascript写的第一个程序,在写的过程中走了很多弯路,所以写完之后想分享出来,给与我一样的初学者做为学习的参考,同时在编写这 ...
- HTML5 canvas 在线画笔绘图工具(三)
组装画板(TDrawBuilder) 在这一小节中我们要把工具条和画板组装起来,让他们可以协同进行工作. 画板通过一个命名为TDrawBuilder来进行组装.在详细讲解TDrawBuilder对象之 ...
- H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图
今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...
- 基于HTML5 Canvas和jQuery 的绘图工具的实现
简单介绍 HTML5 提供了强大的Canvas元素.使用Canvas并结合Javascript 能够实现一些很强大的功能.本文就介绍一下基于HTML5 Canvas 的绘图工具的实现.废话少说,先看成 ...
- 一起来画画!8款最佳HTML5绘图工具
HTML5无疑是当前最受宠的一项技术,今天推荐8款HTML5绘图工具,同样惊艳你的眼球!这些绘图工具大多数是用HTML5画布(Canvas)实现的,部分辅以Javascript.对每一个web设计者来 ...
- Web前端错题模糊题记录
title: Web前端错题模糊题记录 toc: true date: 2018-09-20 10:04:36 categories: Web tags: HTML CSS JavaScript HT ...
随机推荐
- 一个杂项PDF
不是很难,但是就是比较考虑个人的细心程度,下载压缩包解压得到一个pdf文件,直接打开发现没有什么隐藏的信息,准换成word也是,没有什么东西,使用winhex打开看一下,一开始是没有注意到什么的,这里 ...
- jenkins配置节点服务器
参考博文:https://www.cnblogs.com/derekchen/p/5892286.html 配置的时候,遇到了以下问题,记录一下. 1. 按照教程配置,节点服务器(比如你要部署的测试服 ...
- 白话OAuth2.0
一.OAuth是什么 OAuth简写:Open Authorization(开放授权).百度百科上是这么说的:为用户资源提供了一个安全,开放而又简易的标准.解决了密码的反模式问题(第三方应用不需要知 ...
- mysql 语句的使用
查看数据库 show databases; use 数据库名: show tables; //显示数据库的表名describe 表名; //显示某表的字段, 建表模板 这是为了清楚直观,再mysql行 ...
- Codeforces Round #750 (Div. 2) E. Pchelyonok and Segments
传送门 题目大意: 给一个序列,可以在这个序列中从左至右选若干个段,第i段的长度为i,对于任意的段i,段内元素和S[i]<S[i+1],求在该序列中最多可以选出几段. 思路:设dp[i][j]为 ...
- java 执行shell命令遇到的坑
正常来说java调用shell命令就是用 String[] cmdAry = new String[]{"/bin/bash","-c",cmd} Runtim ...
- LeetCode-047-全排列 II
全排列 II 题目描述:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:https://lee ...
- ORACLE中ROWNUM
一.rownum 1.rownum是对结果集添加的一个伪列: 2.是先按某种条件查询出结果集之后又添加上的一个列; 3.它总是从1开始,因此在使用的过程中需要谨慎使用>,>=,=,betw ...
- Drools 规则引擎应用
规则引擎-drools 1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 .... ...
- 有效提升Python代码性能的三个层面
使用python进入一个熟练的状态之后就会思考提升代码的性能,尤其是python的执行效率还有很大提升空间(委婉的说法).面对提升效率这个话题,python自身提供了很多高性能模块,很多大牛开发出了高 ...