html5+javascript制作简易画板附图_Javascript教程-查字典教程网
html5+javascript制作简易画板附图
html5+javascript制作简易画板附图
发布时间:2017-01-14 来源:查字典编辑
摘要:见图:代码如下:复制代码代码如下:简易画板#eraseImg{/*橡皮样式*//**/border:solid;color:gray;bor...

见图:

代码如下:

复制代码 代码如下:

<!DOCTYPE html>

<html>

<meta http-equiv="content-type" Content="text/html;charset=utf-8">

<head>

<title>简易画板</title>

<style>

#eraseImg{ /*橡皮样式*//**/

border:solid;

color:gray;

border-radius: 118px;

width: 5px;

height: 5px;

position: absolute;

display: none;

}

.eraseSeries{ /*橡皮大小单选按钮组的排列,此div不单独占一行*/

display: inline-block;

}

</style>

<script src="jquery-1.7.1.js"></script>

<script>

var c;//获取到的2d画板

var painting = false;//判断是否正在绘画,即鼠标左键是否长按下去

var canvas;//画板

$(function(){

$(".eraseSeries").hide();//初始状态单选按钮组隐藏

canvas=document.getElementById("myCanvas");

c=canvas.getContext("2d");

c.lineCap="round";//设置笔迹边角,否则笔迹会出现断层

c.stroke;//笔迹的颜色

c.lineWidth=5;//笔迹的粗细

$("#color").change(function(){//笔迹颜色发生改变时

if(eraseFlag==true)//处在擦皮状态

{

$("#erase").trigger("click");//自动触发橡皮的点击事件,以返回到画笔状态

}

c.strokeStyle=$(this).val();//设置画笔状态

c.lineWidth=$(this).val();

});

$("#fontSize").change(function(){//画笔粗细发生改变

if(eraseFlag==true)//同上

{

$("#erase").trigger("click");

}

c.lineWidth=$(this).val();

c.strokeStyle=$("#color").val();

//eraseFlag=false;

});

$(".eraseSeries").click(function(){//橡皮大小发生改变

var size=$('input[name="eraseSize"]:checked').val();//获取到橡皮单选按钮组的选中值

sizeE=size;//将该值传到全局变量上,sizeE需要用来控制橡皮样式的位置

c.lineWidth=size;

$("#eraseImg").css({"width" :size+"px","height":size+"px"});//橡皮样式大小发生改变

});

$("#erase").toggle(function(){//橡皮按钮的点击翻转事件

c.save();//保持上次设置的状态

eraseFlag=true;

c.stroke;

$("#erase").text("画笔");//改变按钮上的文字

$(".eraseSeries").show('fast');//橡皮单选组出现

// $("#eraseImg").show();

sizeE=5;

},function(){

eraseFlag=false;

$("#erase").text("橡皮");

$(".eraseSeries").hide('fast');

c.restore();//恢复上次画笔的状态(包括颜色,粗细等)

});

//setInterval(paint,2);

});

var p_x;//上次鼠标位置

var p_y;

var p_x_now;//当前瞬间鼠标位置

var p_y_now;

var eraseFlag=false;

var sizeE;//橡皮大小

$(document).mousedown(function(e){//鼠标按下触发事件

// alert(sizeE);

p_x= e.clientX;//获取位置,并置为上次鼠标位置

p_y= e.clientY;

painting = true;//画笔启动标志

});

$(document).mousemove(function(e){//鼠标移动触发事件

if(eraseFlag==true&& e.clientY>30)//橡皮处在激活状态,并且鼠标Y的位置大于30,也即鼠标在画板内

{

//橡皮图像跟随鼠标而动

$("#eraseImg").animate({left: e.clientX-sizeE+"px",top: e.clientY-sizeE+"px"},0).show('fast');

}

else

{

$("#eraseImg").hide('fast');

}

if(painting==true)//处于画笔激活状态

{

//alert(1);

p_x_now= e.clientX;//当前瞬间的鼠标位置

p_y_now= e.clientY;

c.beginPath();//开始路径

//曲线是由一段段非常小的直线构成,计算机运算速度很快,这是一种以直线迭代画曲线的方式

c.moveTo(p_x-5-canvas.offsetLeft,p_y-5-canvas.offsetTop);//移动到起始点

c.lineTo(p_x_now-5-canvas.offsetLeft,p_y_now-5-canvas.offsetTop);//从起始点画直线到终点

c.stroke();

c.closePath();//封闭路径,这个很重要,如果路径不封闭,

// 那么只要canvas颜色发生改变,所有的之前画过的颜色都发生改变

p_x = p_x_now;//一次迭代后讲当前的瞬间坐标值赋给上次鼠标坐标值

p_y = p_y_now;

}

});

$(document).mouseup(function(e){//鼠标松开触发事件

painting=false;//冻结画笔

});

</script>

</head>

<body>

<div >

<select id="color" > <>

<option value="red">红色</option>

<option value="yellow">黄色</option>

<option value="blue">蓝色</option>

<option value="black" selected>黑色</option>

<option value="green">绿色</option>

</select>

<select id="fontSize"> <>

<option value=5 selected>5</option>

<option value=10>10</option>

<option value=15>15</option>

<option value=20>20</option>

<option value=30>30</option>

</select>

<button id="erase">擦皮</button> <>

<div> <>

<input type="radio" name="eraseSize" value="5" checked/>5

<input type="radio" name="eraseSize" value="10"/>10

<input type="radio" name="eraseSize" value="15"/> 15

<input type="radio" name="eraseSize" value="20"/> 20

<input type="radio" name="eraseSize" value="30"/>30

</div>

</div>

<>

<canvas id="myCanvas" width="1420" height="780"></canvas> <>

<div id="eraseImg"> <>

</div>

</body>

</html>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类