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 ...
随机推荐
- jQuery的XX如何实现?——2.show与链式调用
往期回顾: jQuery的XX如何实现?——1.框架 -------------------------- 源码链接:内附实例代码 jQuery使用许久了,但是有一些API的实现实在想不通.于是抽空看 ...
- 使用Lucene.NET实现数据检索功能
引言 在软件系统中查询数据是再平常不过的事情了,那当数据量非常大,数据存储的媒介不是数据库,或者检索方式要求更为灵活的时候,我们该如何实现数据的检索呢?为数据建立索引吧,利用索引技术可以更灵活 ...
- atitit.无线网卡 不能搜索到WiFi 无线路由信号的解决不能上网
atitit.无线网卡 不能搜索到WiFi 无线路由信号的解决不能上网 #---现象 pc机无线网卡不能搜索到无线路由信号.. 但是笔记本和手机是可以的... 不过pc机无线网卡能搜索到别的路由的信号 ...
- Python之Django--ORM连表操作
一对多 class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Mo ...
- 正则表达式提取url中的参数,返回json字符串
var urlstr = "www.baidu.com?a=1&b=xx&c"; var s = urlstr.split("?"); var ...
- GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
转:http://www.tuicool.com/articles/NVVnMn (1)GCD实现的同步异步.串行并行. ——同步sync应用场景:用户登录,利用阻塞 ——串行异步应用场景:下载等耗时 ...
- [转]Java Spring的Ioc控制反转Java反射原理
转自:http://www.kokojia.com/article/12598.html 学习一个东西的时候,如果想弄明白,最好想想框架内部是如何实现的,如果是我做我会怎么实现.下面我就写一个Ioc ...
- Swift中的Void类型与空元祖表达式
可能有不少Swift开发者会忽略这么一个细节:在Swift中,Void类型其实是一个别名类型,而其真正的类型为(),即一个空元祖(empty tuple)! 这种语言特性给Swift带来了一些比较方便 ...
- windows 应用商店应用笔记
xaml http://www.cnblogs.com/free722/archive/2011/11/06/2238073.html win8 http://blog.csdn.net/ygzk12 ...
- add .json handler support in IIS 7
Sometimes we need to create JSON in a text file with extension .json, however by default IIS 7 or an ...