由于项目的前端需要用户手绘输入,所以我们利用Canvas控件做绘画面板,并且实现了许多功能,包括手绘笔画,清空画板,上传手绘图,下载手绘图,记录用户笔画,上传背景图。以后有时间都写到这篇博客中,今天晚上想写的一个是如何隐藏input控件。代码如下:

<div style="position: absolute; overflow: hidden; width: 1px; height: 1px; opacity: 0;">
<input class="loadCanvas" onclick="$('#frontBgInput').click();" type="button" value="加载背景图" />
</div>

效果图如下:


下面记录一下如何加载草绘图,先在前端增加一个input控件为了让用户提供草绘图的名字(这个系统因为是内部用的)所以并没有提供上传草绘图的功能,之后应该会加入的。前端代码:

<div style="position: absolute; overflow: hidden; width: 1px; height: 1px; opacity: 0;">
<input type="file" id="frontFileInput" name="files[]" multiple="multiple" onchange="ff.load()"/>
</div>
<input class="loadCanvas" onclick="$('#frontFileInput').click();" type="button" value="加载草绘图" /> <br />

<input type="file">才是读入文件名的控件,而<input type="button">是为了给用户提供一个按钮,当按钮触发后调用的是<input type="file" id="frontFileInput">的click()方法,这时候再触发<onchange="ff.load()"/>中的ff.load()方法,这里的ff是一个类名而已。这个方法的代码如下:

load: function (c) {
var frontSketchName = $('#frontFileInput').val().toString();
var img = new Image();
img.onload = function () {
var ctx = document.getElementById("test").getContext('2d');
ctx.drawImage(img, 0, 0); var j_ctx = document.getElementById('test').getContext('2d');
var j_drawData = '';
var j_imageData = j_ctx.getImageData(0, 0, 290, 250); //获取面板图像的像素值
for (var i = 0; i < j_imageData.data.length; i += 4) {
j_drawData += j_imageData.data[i + 3];
j_drawData += ',';
} document.getElementById("HiddenImageDa").value = j_drawData; //将像素值字符串传到后台
}
img.src = 'sketch/' + frontSketchName; //图像的路径
}

Canvas绘画功能(待补充)的更多相关文章

  1. 开发Canvas 绘画应用(四):实现拖拽绘画

    在开发Canvas绘画应用(三):实现对照绘画中,我们实现了视图引导的第一部分,这一篇我们来完成第二部分,即将图片直接拖到画布上进行绘画. ✁ 拖放如何实现? [拖放的基本概念]:创建一个绝对定位的元 ...

  2. 开发Canvas 绘画应用(三):实现对照绘画

    需求分析 在我的毕设中,提出了视图引导的概念,由两部分功能组成: (1)可以对照着图片进行绘画,即将图片以半透明的方式呈现在绘图板上,然后用户可以对照着进行绘画: (2)可以直接将简笔画图片直接拖拽到 ...

  3. 开发Canvas 绘画应用(二):实现绘画

    开发Canvas 绘画应用(一):搭好框架 中我们已经把基本框架及基础功能实现了,现在要实现本应用的重点:绘画功能. 首先分析一下,我们要实现绘画,需要具备的理论知识如下: (1)获取触摸点的坐标 类 ...

  4. 开发Canvas 绘画应用(一):搭好框架

    毕业汪今年要毕业啦,毕设做的是三维模型草图检索,年前将算法移植到移动端做了一个小应用(利用nodejs搭的服务),正好也趁此机会可以将前端的 Canvas 好好学一下~~毕设差不多做完了,现将思路和代 ...

  5. 浅谈canvas绘画王者荣耀--雷达图

    背景: 一日晚上下班的我静静的靠在角落上听着歌,这时"滴!滴!"手机上传来一阵qq消息.原来我人在问王者荣耀的雷达图在页面上如何做出来的,有人回答用canvas绘画.那么问题来了, ...

  6. 利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果

    利用canvas阴影功能与双线技巧绘制轨道交通大屏项目效果 前言 近日公司接到一个轨道系统的需求,需要将地铁线路及列车实时位置展示在大屏上.既然是大屏项目,那视觉效果当然是第一重点,咱们可以先来看看项 ...

  7. html5 canvas绘画时钟

    本示例使用HTML5 canvas,模拟显示了一个时钟, 请使用支持HTML5的浏览器预览效果: HTML部分: <!DOCTYPE html> <html lang="e ...

  8. 【朝花夕拾】Android自定义View篇之(二)Canvas常用功能

    前言 转在请申明,转自[https://www.cnblogs.com/andy-songwei/p/10960012.html],谢谢! 上一篇讲View的绘制流程中讲到过,最后一步是draw流程, ...

  9. 利用canvas绘画二级树形结构图

    上周需要做一个把页面左侧列表内容拖拽到右侧区域,并且绘制成关系树的功能.看了设计图,第一反应是用canvas绘制关系线.吭哧吭哧搞定这个功能后,发现用canvas绘图,有一个很严重的缺陷.那就是如果左 ...

随机推荐

  1. Ubuntu修改文件关联

    * 在system setting>details中可以设置一部分文件关联,很弱很破. * 右键open with只能临时选择打开方式,并且可选的打开方式十分有限.如果是自己编的程序,在列表中没 ...

  2. C++ redirect input

    #include<iostream> #include<string> #include<fstream> using namespace std; int mai ...

  3. auto refresh iframe

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  4. C#利用iComparable接口实现List排序

    List<T>类可以使用Sort()方法对元素排序. Sort()方法定义了几个重载方法,分别是  public void List<T>.Sort(),不带有任何参数的Sor ...

  5. fio 2种画图方法 fio_generate_plots 和 gfio

    fio 安装fio apt-get install fio 可以把fio的输出数据自动画图的插件gnuplot apt-get install gnuplot 1.输出bw,lat和iops数据并画图 ...

  6. Linux IO Scheduler(Linux IO 调度器)

    每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request.I/O调度器的基本目的是将请求按照它们对应在块设 ...

  7. iOS开发遇到的错误 -- Label显示多行文字导致宽度和高度的问题

    Label的宽度问题 注意:UILabel下面需要设置preferredMaxLayoutWidth ,设置了autolayout和numberofline的UIlabel才显示多行 label宽度的 ...

  8. 【HDU 1007】Quoit Design

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 最近欧式距离模板题. 用分治大法(分治的函数名用cdq纯属个人习惯_(:з」∠)_) 一开始狂M. 后来判 ...

  9. JSon 事件格式化

    JS~json日期格式化   起因 对于从C#返回的日期字段,当进行JSON序列化后,在前台JS里显示的并不是真正的日期,需要格式化时间 实现 function ChangeDateFormat(js ...

  10. python 模块的介绍(一)

    模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了 ...