<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
body{
background: white;
}
.ToolBar{
float: left;
font-family: "微软雅黑";
font-size: 14px;
font-variant: small-caps;
text-align: center;
background: #F2F7EE;
padding: 10px 15px 3px 10px;
margin-bottom: 1px;
margin-right: 1px;
border: 1px solid #7B899B;
}
.ToolBar button{
padding: 6px;
margin: 7px 2px;
font-variant: normal;
font-size: 12px;
}
canvas{
border: 1px solid #7B899B;
}
img{
padding: 2px;
border: 2px solid #F2F7EE;
}
img:hover{/*当鼠标悬停在图片上*/
border: 2px groove #E4F0FE;
background: white;
}
img.Selected{
border: 2px groove #E4F0FE;
}
#saveCopyContainer{
display: none;
}
#saveCopyContainer img{
width: 250px;
height: 150px;
}
.CanvasContainer{
}
</style>
<script type="text/javascript">
var canvas;
var context;
var isDrawing=false;
window.onload=function(){
canvas = document.getElementById("drawingCanvas");
context = canvas.getContext("2d");
canvas.onmousedown = startDrawing;
canvas.onmouseup = stopDrawing;
canvas.onmouseout = stopDrawing;
canvas.onmousemove = draw;
}
function startDrawing(e)
{
isDrawing = true;
context.beginPath();
context.moveTo(e.pageX-canvas.offsetLeft,e.pageY-canvas.offsetTop);
}
function stopDrawing()
{
isDrawing=false;
}
function draw(e)
{
if(isDrawing)
{
var x = e.pageX-canvas.offsetLeft;
var y = e.pageY-canvas.offsetTop;
context.lineTo(x,y);
context.stroke();
}
}
function changeColor(color,imgEle)
{
context.strokeStyle = color;
imgEle.className = "Selected";
}
function changethickness(thickness,imgEle)
{
context.lineWidth = thickness;
imgEle.className = "Selected";
}
function clearCanvas(){
context.clearRect(0,0,canvas.width,canvas.height)
}
function saveCanvas(){
var imageCopy = document.getElementById("saveImageCopy");
imageCopy.src = canvas.toDataURL();
var imageContainer = document.getElementById("saveCopyContainer");
imageContainer.style.display = "block";
}
</script>
</head>
<body>
<div class="Toolbar">
<img id="redPen" src="img/pen_red.gif" alt="Red Pen"
onclick="changeColor('rgb(212,21,29)',this)"/>
<img id="greenPen" src="img/pen_green.gif" alt="Green Pen"
onclick="changeColor('rgb(131,190,61)',this)"/>
<img id="bluePen" src="img/pen_blue.gif" alt="Blue Pen"
onclick="changeColor('rgb(0,86,166)',this)"/>
</div>
<div class="Toolbar">
<img src="img/pen_thin.gif" alt="Thin Pen"
onclick="changethickness(1,this)"/>
<img src="img/pen_medium.gif" alt="Medium Pen"
onclick="changethickness(5,this)"/>
<img src="img/pen_thick.gif" alt="Thick Pen"
onclick="changethickness(10,this)"/>
</div>
<div>
<canvas id="drawingCanvas" width="500" height="500"></canvas>
</div>
<div>
<button onclick="saveCanvas()">Save</button>
<button onclick="clearCanvas()">Clean</button>
<div id="saveCopyContainer">
<img id="saveImageCopy"/><br/>
</div>
</div>
</body>
</html>

素材:

HTML5入门十---Canvas画布实现画图(一)的更多相关文章

  1. HTML5入门十一---Canvas画布实现画图(二)

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

  2. HTML5入门九---Canvas画布

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

  3. HTML5 中的 canvas 画布(一)

    ---恢复内容开始--- 在HTML5中新添加的元素,canvas 现在支持 IE9+的版本 注意:HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript ...

  4. HTML5 中的 canvas 画布(二)

    绘制图片 一.绘制图片 context.drawImage()(即把图片放到canvas里) var image = new Image();  // 先创建图片对象 image.src = '图片的 ...

  5. canvas画布如何画图案例

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  6. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  7. 自学HTML5第四节(canvas画布详解)

    canvas画布好像可是说是HTML5的精华了,一定要学好,嗯嗯,绚丽的东西就要从基础的开始.... 先看看啥玩意叫做canvas 什么是 Canvas? HTML5 的 canvas 元素使用 Ja ...

  8. “canvas画布仿window系统自带画图软件"项目的思考

    "canvas画布仿window系统自带画图软件"项目的思考 首先贴上DEMO图,并没有美化效果.对UI有要求的,请自带补脑技术. 思考一 在做项目的过程中,我发现"工具 ...

  9. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

随机推荐

  1. js 函数闭包内部返回函数体调用方法难点解答

    今天在网上,看到一篇关于js函数难点的文章,js函数的一些难点.在那上面提了一下,关于js函数返回另一个函数的问题,并附上了一道面试题: var add = function(x){ var sum ...

  2. UDP HelloWord

    Client.cpp #include <stdio.h> #include <winsock2.h> #pragma comment (lib,"ws2_32&qu ...

  3. mac安装cocoapods

    sudo gem install cocoapods

  4. 简单的C#线程开发实例(隔一秒改变一下Label的Text)

    要实现的效果:点击按纽,窗口上的label上出现1~100数字的变化. 第一个实例(把窗口上的label上文字改成0): using System; using System.Windows.Form ...

  5. C++实现数字媒体二维图像变换

    C++实现数字媒体二维图像变换 必备环境 glut.h 头文件 glut32.lib 对象文件库 glut32.dll 动态连接库 程序说明 C++实现了用glut画正方形,画三角形的功能.并附带放大 ...

  6. Encog

    http://www.heatonresearch.com/encog/ https://www.mql5.com/zh/articles/252

  7. (转)assert()函数用法总结

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( in ...

  8. mysql 执行流程

    mysql 执行流程 我们可以人为的把mysql 的主要功能分为如下模块. 1.初始化模块 mysql启动的时候执行初始化工作,如读取配置文件,分配一些全局变量(sql_model,catch buf ...

  9. c++ 常用数据接口 set

    #include <set> #include <iostream> #include <string> int main(void) { std::set< ...

  10. SQL SERVER字符串函数

    本篇文章还是学习<程序员的SQL金典>内容的记录,此次将讲解的是SQL SERVER的字符串函数. 其实数据库跟程序语言库一样,都会集成很多可以使用的API.这些API,如果你熟悉的话,将 ...