Canvas现实画板功能
先看图片
HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="../src/lib/require.js"></script>
<style>
input{
width: 50px;
border: none;
text-align: center;
}
input[type=range]{
width: 200px;
}
label{
margin-left: 10px;
}
input,label{
vertical-align: middle;
}
canvas{
cursor: default;
}
</style>
</head>
<body>
<div class="m10">
<canvas id="canvas"></canvas>
<p><input type="range" name="" id="num" min=0 max=10 value=2><label for="num">线条大小</label><input type="color" name="" id="color"><label for="color">线条颜色</label></p>
</div> <script>
requirejs(['../src/canvas'], function() {});
</script>
</body>
</html>
Javascript
define([], function() {
var getId = function(id) {
return typeof id === 'string' ? document.getElementById(id) : id;
}; function getPosition(o) {
if (!(o && o.nodeName)) {
return {
left: 0,
top: 0
};
}
var t = parseInt(o.offsetTop, 10),
l = parseInt(o.offsetLeft, 10);
while (o.offsetParent) {
o = o.offsetParent;
t += o.offsetTop;
l += o.offsetLeft;
}
return {
left: l,
top: t
};
}
var canvas = getId('canvas'),
ct = canvas.getContext('2d'),
w = canvas.width = 600,
h = canvas.height = 400;
var bgl = ct.createRadialGradient(400, 0, 0, 400, 0, 400);
bgl.addColorStop(0, 'red');
bgl.addColorStop(1, 'green');
ct.beginPath(); function draw(ev) {
console.log(getPosition(canvas));
var x = ev.clientX - getPosition(canvas).left;
var y = ev.clientY - getPosition(canvas).top;
ct.lineTo(x, y);
ct.stroke();
console.log(x + '--' + y);
}
canvas.onmousedown = function(ev) {
var x = ev.clientX - getPosition(canvas).left;
var y = ev.clientY - getPosition(canvas).top;
var size = getId('num').value;
var color = getId('color').value;
ct.save();
ct.strokeStyle = color;
ct.lineWidth = size;
ct.beginPath();
canvas.onmousemove = draw;
};
document.onmouseup = function(ev) {
canvas.onmousemove = null;
ct.closePath();
//ct.fill();
ct.restore();
};
});
Canvas现实画板功能的更多相关文章
- canvas实现画板功能(渐变、动画、阴影...)
刚刚在博客园落户了,希望能在这认识更多大神,希望能和大家交好朋友. 闲来无事,把以前用canvas写的画板代码改进了一番,用Html5提供的表单标签给其 加了一个选择颜色的功能,因此发现了该标签的一个 ...
- 【分享】用Canvas实现画板功能
前言 PC端测试:QQ浏览器全屏绘画完成.缩小时内容会被清空,切换背景颜色内容会被重置,其他暂无发现: 手机端测试:微信内置浏览器不通过:Safari 浏览器使用画笔时没固定页面会有抖动效果,使用橡皮 ...
- canvas实现画板
canvas实现画板 主要用到知识点: 鼠标事件onmousedown() onmousemove() onmouseup() onmouseleave() 事件委托 canvas的一些方法 如:绘制 ...
- 一款基于HTML5 Canvas的画板涂鸦动画
今天给各网友分享一款基于HTML5 Canvas的画板涂鸦动画.记得之前我们分享过一款HTML5 Canvas画板工具,可以切换不同的笔刷,功能十分强大.本文今天要再来分享一款基于HTML5 Canv ...
- canvas小画板--(1)平滑曲线
功能需求 项目需求:需要实现一个可以自由书写的小画板 简单实现 对于熟悉canvas的同学来说,这个需求很简单,短短几十行代码就能实现: <!doctype html> <html& ...
- canvas小画板——(2)荧光笔效果
我们在上一篇文章中讲了如何绘制平滑曲线 canvas小画板——(1)平滑曲线. 透明度实现荧光笔 现在我们需要加另外一种画笔效果,带透明度的荧光笔.那可能会觉得绘制画笔的时候加上透明度就可以了.我们来 ...
- html5 canvas 实现倒计时 功能
function showTime(a) { var b = { id: "showtime", //canvasid x: 60, //中心点坐标 X轴; y: 60, //中心 ...
- iOS实现白板、画板功能,有趣的涂鸦工具,已封装,简单快捷使用
一.效果图: 二.选择颜色: 分[固定颜色模式]和[自由取模式]. 三.操作栏功能: 1.撤销:撤销上一步操作,可一直往上进行,直到全部清空. 2.清空:直接清除所有绘画. 3.橡皮擦:去除不要的绘 ...
- canvas 实现简单的画板功能添加手机端效果 1.01
在上次的基础上,加了一些代码,手机端可操作 访问网址:https://chandler712.github.io/Item/ <!-- 简单版画板 --> <!DOCTYPE htm ...
随机推荐
- 三国杀3v3心法——总述篇
昔日,独孤求败前辈精研剑法,将其中奥妙化为独孤九剑,破尽天下武功.其中开篇总诀式提纲挈领,从宏观的层面阐述剑道,是领悟后面八式的基石,而之后各式则深入微观,可各破一类具体的武功.笔者亦曾苦心研究三国杀 ...
- js里各浏览器解析XML,支持IE、火狐、Chrome等
js在chrome中加载XML,js加载XML支持ff,IE6+,Opera等浏览器 见代码: <!doctype html> <html lang="en"&g ...
- paip.提升性能---协程“微线程”的使用.
paip.提升性能---协程的使用. 近乎无限并发的"微线程" 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...
- 学习Git
参考廖雪峰老师的个人网站:http://www.liaoxuefeng.com 版本库初始化 通过git init命令将这个命令变为git可以管理的仓库 添加文件 用命令git add file告诉G ...
- FreeSwitch安装配置记录
安装FreeSwitch 主要命令如下: git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.gitcd freeswitch/. ...
- Android JNI HelloWorld实现
创建一个JNIDemo的Android工程 在项目下创建一个文件夹jni.(注意必须是jni目录) 在jni目录下创建两个文件:Android.mk 和 first_jni.c(.c文件的名字可以任意 ...
- loadlibrary DLL 0失败 的一个原因。
加载DLL失败,因为 dll 中有一个全局类变量,由于在构造函数 没有初始化变量,导致 初始化 失败 异常. C++ 变量没有初始值,全部都要 手动赋值 为 0 的这个特性 还真是烦人呢...
- 搭建windows的solr6服务器
准备工作: 目前最新版本6.0.下载solr 6.0:Solr6.0下载 JDK8 下载jdk1.8:jdk1.8[solr6.0是基于jdk8开发的] tomcat8.0 下载:tomcat8 ## ...
- 混合使用Jquery Deferred和Angularjs的$timeout(转)
原文链接:http://my.oschina.net/gejiawen0913/blog/174826 <!DOCTYPE html> <html ng-app="Demo ...
- spring 4.2.0后jdbcTemplate中不用queryForLong了(之系统升级发现)
在spring 3.2.2之后,jdbcTemplate.queryForInt已经被取消了! 原来是这样写的: String sql = "SELECT count(*) FROM USE ...