本文实例讲述了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程序设计有所帮助。

html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例相关推荐

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

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

  2. php写字板代码,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. html 写字版插件,原生JS+HTML5实现的可调节写字板功能示例

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

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

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

  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. java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能

    一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...

最新文章

  1. 实验5,利用三层交换机实现VLAN间路由
  2. 九维 Addon for SBO 功能说明及新版软件下载
  3. Java线程简单总结
  4. 1109 Group Photo (25 分)【难度: 一般 / 知识点: 模拟 排序】
  5. 在vs2005中使用Com连接SAP系统(二)
  6. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解
  7. Android通过XML来定义Menu
  8. 各种光源(灯)的光谱
  9. 以下是ECMAScript 2016、2017和2018中所有新增功能的示例
  10. 【Codeforces Round #291 (Div. 2) C】Watto and Mechanism【Trie树、Hash】
  11. eda多功能数字钟课程设计_EDA电子钟多功能数字时钟课程设计(含代码)[优秀]...
  12. C++游戏服务器框架笔记(二)_封装Socket类
  13. 地铁工程安全生产预警系统价格
  14. 开源软件之lftp的使用
  15. 采用MPI_Send 和MPI_Recv 编写代码来实现包括MPI_Bcast、MPI_Alltoall、MPI_Gather、MPI_Scatter 等MPI 群集通信函数的功能
  16. Java程序员的春天!java第三方线程池
  17. 在web上面显示地图并定位
  18. C/C++的灵魂—指针实现冒泡排序、选择排序和插入排序
  19. JAVA删除pdf空白页_【教程】Spire.PDF 教程:在C# 删除 PDF 中的空白页
  20. R语言辅导高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

热门文章

  1. jsp中post提交和get提交乱码解决_统一请求编码
  2. Java线程池实现音频播放
  3. python绘图颜色深浅代表数值_画图理解Python的深浅拷贝
  4. linux查看火狐进程,Firefox 终于用上多进程技术了
  5. 如何控制表格的宽度_利用Word制作表格,这些实用技巧一定要知道!制作表格更加快捷...
  6. linux centos7上安装sql developer
  7. 学python要有多少英语词汇量测试_非常适合新手的一个Python爬虫项目: 打造一个英文词汇量测试脚本!...
  8. 创造与魔法最新服务器怎么进,创造与魔法进不了服务器 | 手游网游页游攻略大全...
  9. oracle还原脚本,oracle自动恢复脚本
  10. Python学习笔记:利用sorted()函数对序列排序