当前位置: 首页 > news >正文

html5 涂鸦板

效果图:



<html>
<head>
<script src="colorFactory.js"></script>


<title>HTML5涂鸦板</title>



<script type="text/javascript">


var drawingBrd;
var context;


var penColor ="#FF0000";
var penSize = 1;


window.onload = function(){


//====================涂鸦板================


drawingBrd = document.getElementById("cvsPanel");
context = drawingBrd.getContext("2d");
drawingBrd.onmousedown = mousedownhandler;
document.onmouseup = mouseuphandler;


//=============================================


//======================调色板================


var cf = new colorFactory();
cf.init(document.getElementById("colorBoard"));


//=============================================


//=======================宽度==================


var sizeCtn = document.getElementById("sizeBoard");


for(var i = 1;i < 200;i +=2){
sizeCtn.innerHTML += "<span style='border:1px solid #212121;' οnclick=changeSize(" + i/10 + ");>" + "  " +i/10 +"</span>";


//"<span style='border:1px solid #212121;width:5px;height:5px;' οnclick=changeSize(" + i/10 + "); >" + i/10 +"</span>";
}
//=============================================




//==========================清空===============


document.getElementById("btnClear").onclick = function(){
if(!confirm("确认清空吗?")){
return;
}
context.clearRect(0,0,800,600);
}
//=============================================


//===========================保存===============


document.getElementById("btnSave").onclick = function(){
window.open(drawingBrd.toDataURL(),"保存画布","width=800,height=600,location=no,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no");
}
//==============================================


}




//==================涂鸦板鼠标事件处理=================


function mousedownhandler(e){


var canvasMouseX = event.layerX;
                if (!canvasMouseX) {
                    canvasMouseX = event.x;
                }
                var canvasMouseY = event.layerY;
                if (!canvasMouseY) {
                    canvasMouseY = event.y;
                }


context.strokeStyle = penColor;
context.lineWidth = penSize;
context.beginPath();
context.moveTo(e.x,e.y);
drawingBrd.onmousemove = movedraw;


}


function movedraw(e){
var canvasMouseX = event.layerX;
                if (!canvasMouseX) {
                    canvasMouseX = event.x;
                }
                var canvasMouseY = event.layerY;
                if (!canvasMouseY) {
                    canvasMouseY = event.y;
                }
context.lineTo(e.x,e.y);
context.stroke();
//context.closePath();
}


function mouseuphandler(e){
drawingBrd.onmousemove = null;
}


//============================================


//==========================工具箱方法============


function changeColor(color){
penColor = color;
}




function changeSize(size){
penSize = size;
}


//==============================================




</script>


</head>


<body>


<!--
涂鸦板
-->
<canvas id="cvsPanel" width="800px" height="600px" style="border:1px solid #000000" >
</canvas>


<!--
工具箱
-->
<div id="tool" style="float:right">


<!--调色板-->
<div id="colorBoard" style="width:400px;height:190px;border: 1px solid #000000;"></div>
<br />
<!--
线条大小
-->
<div id="sizeBoard" style="width:400px;height:230px;border: 1px solid #000000;"></div>
<br />


<!--
控制板
-->
<div id="ctlPnl" style="float:right;width:400px;height:50px;border:1px solid #000000;">
<input type="button" id="btnClear" value="清空" />
<input type="button" id="btnSave" value="保存" />
</div>


<!--
常用图形
-->


</div>
<br />






</body>
</html>




colorFactory.js

function colorFactory(ctlId){
}


colorFactory.prototype = {


//========================初始化调色板==================================
init : function(ctl){
var colorArr = new Array("#990033","#CC6699","#FF6699","#FF3366","#993366","#CC0066","#CC0033","#FF0066","#FF0033","#CC3399",
"#FF3399","#FF9999","#FF99CC","#FF0099","#CC3366","#FF66CC","#FF33CC","#FFCCFF","#FF99FF","#FF00CC",
"#FF66FF","#CC33CC","#CC00FF","#FF33FF","#CC99FF","#9900CC","#FF00FF","#CC66FF","#990099","#CC0099",
"#CC33FF","#CC99CC","#990066","#993399","#CC66CC","#CC00CC","#663366","#660099","#666FFF","#000CCC","#9933CC",
"#666699","#660066","#333366","#0066CC","#9900FF","#333399","#99CCFF","#9933FF","#330099","#6699FF","#9966CC","#3300CC",
"#003366","#330033","#3300FF","#6699CC","#663399","#3333FF","#006699","#6633CC","#3333CC", "#3399CC","#6600CC","#0066FF","#0099CC","#9966FF",
"#0033FF","#66CCFF","#330066","#3366FF","#3399FF","#6600FF","#3366CC","#003399","#6633FF","#000066","#0099FF","#CCCCFF","#000033","#33CCFF","#9999FF",
"#0000FF","#00CCFF","#9999CC","#000099","#6666CC","#0033CC","#FFFFCC","#FFCC00","#CC99090","#663300","#FF6600","#663333","#CC6666","#FF6666","#FF0000",
"#FFFF99","#FFCC66","#FF9900","#FF9966","#CC3300","#996666","#FFCCCC","#660000","#FF3300","#FF6666","#FFCC33",
"#CC6600","#FF6633","#996633","#CC9999","#FF3333","#990000","#CC9966","#FFFF33","#CC9933","#993300","#FF9933",
"#330000","#993333","#CC3333","#CC0000","#FFCC99","#FFFF00","#996600","#CC6633","#99FFFF","#33CCCC","#00CC99","#99FF99","#009966","#33FF33",
"#33FF00","#99CC33","#CCC333","#66FFFF","#66CCCC","#66FFCC","#66FF66","#009933","#00CC33","#66FF00","#336600","#333000","#33FFFF","#339999",
"#99FFCC","#339933","#33FF66","#33CC33","#99FF00","#669900","#666600","#00FFFF","#336666","#00FF99","#99CC99","#00FF66","#66FF33","#66CC00",
"#99CC00","#999933","#00CCCC","#006666","#339966","#66FF99","#CCFFCC","#00FF00","#00CC00","#CCFF66","#CCCC66","#009999","#003333",
"#006633","#33FF99","#CCFF99","#66CC33","#33CC00","#CCFF33","#666633","#669999","#00FFCC","#336633","#33CC66","#99FF66","#006600",
"#339900","#CCFF00","#999966","#99CCCC","#33FFCC","#669966","#00CC66","#99FF33","#003300","#99CC66",
"#999900","#CCCC99","#CCFFFF","#33CC99","#66CC66","#66CC99","#00FF33","#009900","#669900","#669933",
"#CCCC00","#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000");


for(var i = 0;i < colorArr.length;i ++){
ctl.innerHTML += "<span style='background-color:" +colorArr[i] +";border:1px solid #ffffff;' οnclick=changeColor('" +colorArr[i] +"');>  </span>";
}


//=======================================================================


}

}


demo地址:

http://lanliang.web-164.com/html5/paint/panel.html

相关文章:

  • [IE编程] IE中使网页元素进入编辑模式
  • linux命令练习 笔记
  • [IE技巧] IE 中打开Office文件的设置
  • 配置系统未能初始化 错误的解决方案
  • [IE编程] IE中对网页进行截图的编程接口
  • c# 反射 遍历实体的所有字段,ObjectDumper类实现
  • Flex开发流程设计器的经验之谈(3)
  • 飞信分布式存储的结构
  • 使用Zoundry进行测试了下!
  • 使用HTML5制作游戏
  • [Web开发] IE 所有版本打包下载,网页兼容测试必备
  • c# LazyQueueT实现
  • Windows NT/2k/XP/Vista 管理员密码重置
  • c# 使用sharppcap实现 网络抓包
  • 数学之美系列十六(上)- 不要把所有的鸡蛋放在一个篮子里 -- 谈谈最大熵模型
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【Linux系统编程】快速查找errno错误码信息
  • 【React系列】如何构建React应用程序
  • 2017 年终总结 —— 在路上
  • Laravel Telescope:优雅的应用调试工具
  • leetcode98. Validate Binary Search Tree
  • php面试题 汇集2
  • PHP那些事儿
  • SpringCloud集成分布式事务LCN (一)
  • windows下mongoDB的环境配置
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 技术:超级实用的电脑小技巧
  • 前端相关框架总和
  • 人脸识别最新开发经验demo
  • 事件委托的小应用
  • 手写双向链表LinkedList的几个常用功能
  • 思否第一天
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 06-01 点餐小程序前台界面搭建
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #图像处理
  • (3)llvm ir转换过程
  • (HAL库版)freeRTOS移植STMF103
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (译) 函数式 JS #1:简介
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)http-server应用
  • (转)程序员技术练级攻略
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 中让 Task 支持带超时的异步等待
  • .net实现客户区延伸至至非客户区
  • .Net组件程序设计之线程、并发管理(一)
  • [2019/05/17]解决springboot测试List接口时JSON传参异常