javascript实现简单画布
2016-07-21 10:22
351 查看
代码块
代码块语法遵循标准markdown代码,例如:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="jquery.min.js"></script> <style type="text/css"> </style> </head> <body> <canvas style="cursor:pointer" id="canvas" width="600" height="400"></canvas> <input id="color" type="color" value="#000000"/> <input id="size" type="range" max="100" min="1" value="1"/> <input name="tools" type="radio" value="pen" checked/> <input name="tools" type="radio" value="eraser"/> <button style="cursor:pointer;" id="cc" >clear</button> <script type="text/javascript"> var c = document.getElementById("canvas"); var cxt=c.getContext("2d"); cxt.strokeStyle = "#111"; cxt.strokeRect(0, 0, 600, 400); $('#cc').click(function(){ context.clearRect(1,1,598,398); clickX = []; clickY = []; clickDrag = []; paint; colorPurple = "#cb3594"; curColor = colorPurple; clickColor = []; curSize = 1; clickSize = []; curTool = 'pen'; }) context = canvas.getContext("2d"); $('#canvas').mousedown(function(e) { //console.log('mousedown'); var mouseX = e.pageX - this.offsetLeft; var mouseY = e.pageY - this.offsetTop; paint = true; addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop); redraw(); }); $('#canvas').mousemove(function(e) { //console.log('mousemove'); if (paint) {//是不是按下了鼠标 addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true); redraw(); } }); $('#canvas').mouseup(function(e) { //console.log('mouseup'); paint = false; }); $('#canvas').mouseleave(function(e) { //console.log('mouseleave'); paint = false; }); var clickX = new Array(); var clickY = new Array(); var clickDrag = new Array(); var paint; var colorPurple = "#cb3594"; var curColor = colorPurple; var clickColor = new Array(); var curSize = 1; var clickSize = []; var curTool = 'pen'; function addClick(x, y, dragging) { //console.log('addClick'); clickX.push(x); clickY.push(y); clickDrag.push(dragging); clickSize.push(curSize); if (curTool == "eraser") { clickColor.push("white"); } else { clickColor.push(curColor); } } function redraw() { //console.log('redraw'); context.lineJoin = "round"; for (var i = 0; i < clickX.length; i++) { context.beginPath(); if (clickDrag[i] && i) { context.moveTo(clickX[i - 1], clickY[i - 1]); } else { context.moveTo(clickX[i] - 1, clickY[i]); } context.lineTo(clickX[i], clickY[i]); context.closePath(); context.strokeStyle = clickColor[i]; context.lineWidth = clickSize[i]; context.stroke(); } } $('#color').change(function(e) { curColor = $(this).attr('value'); }); $('#size').change(function(e) { curSize = $(this).attr('value'); }); $('input[name="tools"]').change(function(e) { curTool = $(this).attr('value'); }); </script> </body> </html>
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解