本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能。分享给大家供大家参考,具体如下:

先来看运行效果:

具体代码如下:

www.jb51.net JS写字板

body,html {

padding: 0;

margin: 0;

}

a,div,span {

font-family: "Arial","Microsoft YaHei","黑体","宋体",sans-serif;

}

.canvas-box {

display: block;

margin: 40px auto;

background: #f5f5f5;

}

.color-box {

width: 1080px;

display: block;

margin: 20px auto;

text-align: center;

}

.color-item {

display: inline-block;

vertical-align: middle;

width: 48px;

height: 24px;

margin: 10px;

background: #989898;

cursor: pointer;

}

.red {

background: #e01d5b;

}

.blue {

background: #1d6ae0;

}

.green {

background: #1de087;

}

.yellow {

background: #f3e41d;

}

.orange {

background: #f9850b;

}

.black {

background: #333;

}

.color-item.active {

border: solid 3px #565656;

}

.btn {

display: block;

width: 120px;

height: 40px;

line-height: 40px;

margin: 10px auto;

text-align: center;

font-size: 18px;

border: solid 1px #999;

border-radius: 5px;

cursor: pointer;

}

清除

var canvas = document.getElementById('canvas');

var context = canvas.getContext("2d");

var isDraw = false; //定义变量控制画笔是否可用

var movePos; //定义变量存放初始画笔开始位置

var linWidth = 10;

var linColor = '#333';

window.onload = function(){

draw();

}

function draw(){

canvas.width = 500;

canvas.height = 500;

context.strokeStyle = "red";

context.lineWidth = 10;

context.beginPath();

context.strokeRect(0,0,500,500);

//设置画笔颜色,宽度

context.strokeStyle = "red";

context.lineWidth = 1;

//使线段连续,圆滑

context.lineCap = "round";

context.lineJoin = "round";

drawDashedLine(context,0,0,500,500);

drawDashedLine(context,0,500,500,0);

drawLine(context,0,250,500,250);

drawLine(context,250,0,250,500);

}

//画虚线(参照网上大神)

function drawDashedLine(context, x1, y1, x2, y2, dashLength) {

dashLength = dashLength === undefined ? 5 : dashLength;

var deltaX = x2 - x1;

var deltaY = y2 - y1;

var numDashes = Math.floor(

Math.sqrt(deltaX * deltaX + deltaY * deltaY) / dashLength);

for (var i=0; i < numDashes; ++i) {

context[ i % 2 === 0 ? 'moveTo' : 'lineTo' ] (x1 + (deltaX / numDashes) * i, y1 + (deltaY / numDashes) * i);

}

context.stroke();

};

//画直线

function drawLine(context,x1,y1,x2,y2){

context.moveTo(x1,y1);

context.lineTo(x2,y2);

context.stroke();

};

//获取鼠标相对与canvas位置

function getPos(x,y){

var box = canvas.getBoundingClientRect();

return {x: x-box.left,y: y-box.top};

};

//画笔

function drawing(e){

if(isDraw){

var position = getPos(e.clientX,e.clientY);

context.strokeStyle = linColor;

context.lineWidth = linWidth;

context.save();

context.beginPath();

context.moveTo(movePos.x,movePos.y);

context.lineTo(position.x,position.y);

context.stroke();

movePos = position;

context.restore();

}

}

//鼠标点下

canvas.onmousedown = function(e){

isDraw = true;

movePos = getPos(e.clientX,e.clientY);

drawing(e);

}

//鼠标移动

canvas.onmousemove = function(e){

drawing(e);

}

//鼠标松开

canvas.onmouseup = function(e){

isDraw = false;

}

//鼠标离开

canvas.onmouseout =function(e){

isDraw = false;

}

//选择画笔颜色

$('.color-item').on('click',function(){

$(this).addClass('active').siblings().removeClass('active');

linColor = $(this).css('background-color');

});

//清除

function clearDraw(){

context.clearRect(0,0,500,500);

draw();

}

感兴趣的朋友还可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,亲身体验一下运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

php写字板代码,JS+HTML5 Canvas实现简单的写字板功能示例相关推荐

  1. html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例

    本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能.分享给大家供大家参考,具体如下: 先来看运行效果: 具体代码如下: www.jb51.net JS写字板 body,html { pa ...

  2. 写字板能用html语言吗,JS+HTML5 Canvas实现简单的写字板功能示例

    本文实例讲述了JS+HTML5 Canvas实现简单的写字板功能.分享给大家供大家参考,具体如下: 先来看运行效果: 具体代码如下: www.jb51.net JS写字板 body,html { pa ...

  3. html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例

    本文实例讲述了js+HTML5 canvas 实现简单的加载条(进度条)功能.分享给大家供大家参考,具体如下: www.jb51.net canvas实现加载条动画 /* * 获取canvas, ca ...

  4. 原生js输出html5,原生JS+HTML5实现的可调节写字板功能示例

    本文实例讲述了原生JS+HTML5实现的可调节写字板功能.分享给大家供大家参考,具体如下: 前面一篇介绍了<JS+HTML5 Canvas实现简单的写字板功能>,这里再介绍另一种实现方法. ...

  5. html 写字版插件,原生JS+HTML5实现的可调节写字板功能示例

    本文实例讲述了原生JS+HTML5实现的可调节写字板功能.分享给大家供大家参考,具体如下: 本文实例讲述了原生JS+HTML5实现的可调节写字板功能.分享给大家供大家参考,具体如下: 前面一篇介绍了& ...

  6. html5 自动扣图,js+html5 canvas实现ps钢笔抠图

    html5 canvas+js实现ps钢笔抠图 1. 项目要求需要用js实现photoshop中钢笔抠图功能,就用了近三四天的时间去解决它,最终还是基本上把他实现了. 做的过程中走了不少弯路,最终一同 ...

  7. 图片怎么转为html5,将图片转化为矢量并canvas化的容易工具(基于Node.js + HTML5 canvas)...

    将图片转化为矢量并canvas化的简单工具(基于Node.js + HTML5 canvas) 一.前言 最近需要做一个图标的矢量化,但是没有数据,因此采用了node.js作为数据处理工具,canva ...

  8. js+html5 canvas全屏彩色条状海浪动画js特效

    下载地址 基于js+html5 canvas制作的一款好看的全屏彩色条状海浪动画特效. dd:

  9. 吓人代码html,HTML5 canvas幽灵鬼魂动画代码 (吓人的效果)

    [实例简介] [实例截图] [核心代码] HTML5 canvas幽灵鬼魂动画代码 - 源码之家 canvas { position: fixed; top: 0; left: 0; } var bl ...

最新文章

  1. 使用go build 进行条件编译
  2. 子查询dinstinct放哪_第四关 复杂查询
  3. python图片解析库_python用来获得图片exif信息的库实例分析
  4. access 战地1不加入ea_炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂...
  5. 【转】调用约定__cdecl、__stdcall和__fastcall的区别
  6. 斑能不能彻底去掉_淡妆能不能只用洗面奶卸掉?
  7. 淮海工学院期末考试Oracle,【2017年整理】淮海工学院物理化学下册期末试题.doc...
  8. 第11章 享元模式(Flyweight Pattern)
  9. jQuery mobile网格布局
  10. 服务端设置忽略更新_深入理解Kafka服务端之日志对象的读写数据流程
  11. python赋值标志_Python中的赋值、引用和深浅拷贝
  12. python 文件的打开与读取
  13. Fatal error in launcher: Unable to create process using ‘“c:\python27\python.exe“ “C:\Python27\Scri
  14. jsp网上零食销售网站系统
  15. 如何以静默方式将.REG文件添加到注册表
  16. 小区宽带网络不稳定,宽带断线重连的几种方法(详细)
  17. 滚动快门效应与果冻效应
  18. 大数据核心技术有哪些 怎么样学好大数据开发
  19. Android 设备之间通过 Wifi 传输文件的功能
  20. 淘宝,天猫获取sku详细信息 API

热门文章

  1. java 获取客户端MAC地址
  2. 计算机常用数制转换说课稿,小学信息说课稿:十进制与二进制的转换
  3. testbed系统测试
  4. 浮点型数据计算面积方法
  5. ps2018年日历素材
  6. git 上传错误This oplation equires one of the flowi vrsionsot the NET Framework:.NETFramework
  7. 通过ping查找和确定网络故障节点
  8. 设计模式--代理模式
  9. python3 入门 (三) 函数与lambda表达式、闭包
  10. 小插曲:我和Nios II的故事