canvas——画板
注意部分:
canvas的height和width不能再css中设定,应该在html中设定,否则会影响页面的分辨率。
效果图:
图1:

代码
css:
#canvas{
cursor: crosshair;
}
button{
width: 80px;
}
.yellowBtn{
background-color: yellow;
}
.redBtn{
background-color: red;
}
.blueBtn{
background-color: blue;
}
.greenBtn{
background-color: green;
}
.whiteBtn{
background-color: white;
}
.blackBtn{
background-color:black;
}
页面:
<canvas id="canvas" width="900" height="400">浏览器不支持html5</canvas>
<br>
<button id="yellow" class="yellowBtn" onclick="lineColor='yellow';">YELLOW</button>
<button id="red" class="redBtn" onclick="lineColor='red';">RED</button>
<button id="blue" class="blueBtn" onclick="lineColor='blue';">BLUE</button>
<button id="green" class="greenBtn" onclick="lineColor='green';">GREEN</button>
<button id="white" class="whiteBtn" onclick="lineColor='white';">WHITE</button>
<button id="black" class="blackBtn" onclick="lineColor='black';">BLACK</button>
<br>
<button class="lineWeight4" class="whiteBtn" onclick="lineWeight=2;">2px</button>
<button class="lineWeight4" class="whiteBtn" onclick="lineWeight=4;">4px</button>
<button class="lineWeight8" class="whiteBtn" onclick="lineWeight=8;">8px</button>
<button class="lineWeight12" class="whiteBtn" onclick="lineWeight=12;">12px</button>
js:
<script type="text/javascript">
var canvas = document.getElementById("canvas"); //判断是否支持canvas
if(!canvas || !canvas.getContext){
return false;
} //获得context对象,目前只支持2d
var ctx = canvas.getContext("2d"); //画出画板背景,此处为矩形
ctx.fillStyle = "black";
ctx.fillRect(0, 0, 900, 400); //初始化鼠标是否按下和坐标点位置, true为按下
var mouseState = false,
oldX = -10,
oldY = -10,
lineColor = "white",
lineWeight = 2; //canvas添加鼠标事件, 鼠标移动、鼠标按下和鼠标弹起
if(window.addEventListener){
canvas.addEventListener("mousemove", draw, true);
canvas.addEventListener("mousedown", down, false);
canvas.addEventListener("mouseup", up, false); }else{
canvas.attachEvent("onmousemove", draw);
canvas.attachEvent("onmousedown", down);
canvas.attachEvent("onmouseup", up);
} //鼠标按下,拖动画图
function draw(event){
if(mouseState === true){
var newX = event.clientX - 10;
var newY = event.clientY - 10; ctx.beginPath();
ctx.moveTo(oldX, oldY);
ctx.lineTo(newX, newY); ctx.strokeStyle = lineColor;
ctx.lineWidth = lineWeight;
ctx.lineCap = "round";
ctx.stroke(); oldX = newX;
oldY = newY;
} } function down(event){
mouseState = true;
oldX = event.clientX - 10;
oldY = event.clientY - 10;
} function up(){
mouseState = false;
} </script>
增加导出功能:
使用 canvas.toDataURL("image/png");保存图片,eg:
function exportImage(event){
var imgSrc = canvas.toDataURL("image/png");
document.getElementById("image").src = imgsrc;
}
canvas——画板的更多相关文章
- QML学习笔记(二)-纯qml画图实现canvas画板-鼠标画图
作者: 狐狸家的鱼 Github: 八至 版权声明:如需转载请获取授权和联系作者 用纯qml实现canvas画板功能,用鼠标进行画图,可以画直线,画圆,画矩形,画弧线. 由于canvas画图会有延迟和 ...
- 简易的canvas画板
没事仿照windows画板工具用canvas实现了一个简易版的画板. html: <!doctype html> <html> <head> <meta ch ...
- canvas 画板
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- html5 canvas画板
点击查看演示地址 <!DOCTYPE HTML> <html> <title>HTML5-CanvasDrawDemo</title> <meta ...
- html5 canvas 画板
<!doctype html> <head> <meta http-equiv="Content-Type" content="text/h ...
- JS canvas 画板 撤销
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Canvas画板
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6QAAAGgCAIAAAAy0z21AAAgAElEQVR4nO3dfYwkZ30n8JqZfcNex8
- canvas画板基础应用的学习
canvas是html5中的绘图容器,我们可以通过javascript的控制来进行图形的绘制,绘制对象可以是路径.盒.圆.字符等,同时,你也可以通过js给画布添加图像,下面来介绍canvas的各种基本 ...
- canvas实践小实例一 —— 画板工具
前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...
随机推荐
- 【转】[转]order by 1是什么意思?
[转][转]order by 1是什么意思? ORDER BY 1 表示 所select 的字段按第一个字段排序 ORDER BY ASC应该没有这样写法,ORDER BY 后面不是字段就是数字, 可 ...
- SQL 中case when then else 用法
SQL如下: SELECT DISTINCTsy_haken_type,sy_sagyo_type,sy_kokyaku_cdFROm tbl_syukeiWHERE (sy_sagyo_ymd be ...
- PHP in_array不兼容问题
做过日本的手机端,就因为in_array这个方法在我的环境下没有问题 结果到日本那边就是出问题,一直纠结的我啊,现在特贴出当初的兼容方法 function in_into($key,$array){ ...
- jmeter压测app
使用代理的方式,录制app端脚本,之后用jmeter压测就没啥好说的了 1.电脑端谷歌设置本地代理(端口号为8888) 2.jmeter设置HTTP代理服务器(端口号为8888) 3.手机端wifi设 ...
- union与union all 的区别
Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称为联合)的作用是将多个结果合并 ...
- github 上传或删除 文件 命令
git clone https://github.com/onionhacker/bananaproxy.git cd ~/../.. git config --global user.email & ...
- js Dom树结构分析
对Dom数结构的理解,对用js操作html元素有很大的意义 先来看一下下面这段html代码:(这里就以分析body中的元素来解释,因为我们基本所有的操作基本都围绕body标签来做的) <!DOC ...
- 纯javascript联动的例子
有人想要学习下纯javascript联动的一些技巧,我这里就以日期的联动为例,附上一些代码至于复杂的省市区联动,不建议用纯javascript的,而是用ajax的方式,该不在此讨论范围内,想要了解aj ...
- node 后台ajax文件(同时支持http、https)
var http = require("http"), Url = require("url"), querystring = require('queryst ...
- ART模式和Dalvik模式的异同
Dalvik模式 如果要解释清楚什么是ART模式,我们就需要从Android系统的应用编译模式说起,我们都知道Android系统是以Linux系统为底层构建的,Android系统是开源(源代码公开)的 ...