注意部分:


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——画板的更多相关文章

  1. QML学习笔记(二)-纯qml画图实现canvas画板-鼠标画图

    作者: 狐狸家的鱼 Github: 八至 版权声明:如需转载请获取授权和联系作者 用纯qml实现canvas画板功能,用鼠标进行画图,可以画直线,画圆,画矩形,画弧线. 由于canvas画图会有延迟和 ...

  2. 简易的canvas画板

    没事仿照windows画板工具用canvas实现了一个简易版的画板. html: <!doctype html> <html> <head> <meta ch ...

  3. canvas 画板

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. html5 canvas画板

    点击查看演示地址 <!DOCTYPE HTML> <html> <title>HTML5-CanvasDrawDemo</title> <meta ...

  5. html5 canvas 画板

    <!doctype html> <head> <meta http-equiv="Content-Type" content="text/h ...

  6. JS canvas 画板 撤销

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. Canvas画板

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6QAAAGgCAIAAAAy0z21AAAgAElEQVR4nO3dfYwkZ30n8JqZfcNex8

  8. canvas画板基础应用的学习

    canvas是html5中的绘图容器,我们可以通过javascript的控制来进行图形的绘制,绘制对象可以是路径.盒.圆.字符等,同时,你也可以通过js给画布添加图像,下面来介绍canvas的各种基本 ...

  9. canvas实践小实例一 —— 画板工具

    前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...

随机推荐

  1. svn出错问题(用户名密码有修改以及资源url改变时)

    用eclipse 同步SVN服务器宛然无法访问了: org.tigris.subversion.javahl.ClientException: RA layer request failed svn: ...

  2. A的ascll吗是多少?

    //输入一个字符,返回他的ascll码 #include<stdio.h> int main() { char a; while(scanf("%c",&a)! ...

  3. Ajax无刷新提交表单和显示

    ajax无刷新表单提交:   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  4. vs2015中ctrl+shift+F进行“在文件中查找”,有时候无效?

    搜狗拼音的默认简繁切换快捷键是ctrl+shift+F,改掉以后vs就可以收到这个按键消息了

  5. 使用LuaInterface遇到的编码问题

    今天使用LuaInterface加载脚本时忽然报“未知字符”错误信息!于是检查文件编码 将其修改为“US ASCII” 就好了.

  6. oracle set命令

    SQL>set colsep' ';     //-域输出分隔符SQL>set echo off;     //显示start启动的脚本中的每个sql命令,缺省为onSQL> set ...

  7. Android增加监听的三种实现方式

    在Android中,为一个按钮增加监听的方式有五种 1.匿名内部类 @Override protected void onCreate(Bundle savedInstanceState) { sup ...

  8. iOS设备、Icon、LaunchImage、图片分辨率

    iOS设备 iOS设备的屏幕的大小.分辨率以及比例因数(Scale Factor)[1]. iPhone 设备 宽(inch) 高(inch) 对角线(inch) 逻辑分辨率(point) Scale ...

  9. Error Domain=com.google.greenhouse Code=-102

    *** Terminating app due to uncaught exception 'com.google.greenhouse', reason: 'Error Domain=com.goo ...

  10. SQL的数据类型

    Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. N的范围1-8000 varchar(n) 可变长度的字符串.最多 8,000 个字符 ...