由于项目的前端需要用户手绘输入,所以我们利用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. SVN——配置和安装

    SVN安装步骤: 所有安装文件下载地址:http://pan.baidu.com/s/1bocNTDl 一.安装01----VisualSVN-Server-3.4.2-x64.msi 文件 直接下一 ...

  2. 1116Xlinux初学习之正则表达式和通配符

    一.正则表达式: 元字符是用来阐释字符表达式意义的字符,简言之,就是用来描述字符的字符. 正则表达式RE(Regular Expression)是由一串字符和元字符构成的字符串. 正则表达式的主要功能 ...

  3. canvas边界与摩擦力

    处理物体超出画布时的三种基本状态,复位,移除,反弹 (1)检测是否越界的核心算法 if( object.x - object.width / 2 > right || object.x + ob ...

  4. android修改系统时区

     动态注册广播接收器必须有实例存在 静态不要实例存在   设置系统时区: AlarmManager mAlarmManager = (AlarmManager)getSystemService(Con ...

  5. [转]Spring3核心技术之事务管理机制

    原文地址:http://chouyi.iteye.com/blog/1675199 Spring对事务的解决办法其实分为2种:编程式实现事务,AOP配置声明式解决方案. http://jinnians ...

  6. composer更新不成功,启用国内镜像网站的配置更改办法

    通过 composer config -l -g 命令可以列出 composer 的全局配置信息 [home] 配置项就是 composer 的主目录 修改config.json { "co ...

  7. 一些免费收费api收藏

    转载:http://blog.csdn.net/sdjianfei/article/details/53157334 一 .api 1.http://apistore.baidu.com/astore ...

  8. 【bzoj3757】 苹果树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3757 (题目链接) MD调了好久,最后蒯了几个标程交上去,没想到都RE了...最后才看到:  = = ...

  9. CMMI3标准文档模板大全

    链接:http://pan.baidu.com/s/1c2cGX8W 密码:ulns

  10. SSD硬盘的4K对齐

    4K对应4096 硬盘模式: 一.让SSD运行在AHCI模式下: AHCI,全称Advanced Host Controller Interface,即高级主机控制器接口,相比老旧的“IDE“ 虚拟模 ...