见图:

html5+javascript制作简易画板附图 

代码如下:
复制代码 代码如下:
<!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="/UploadFiles/2021-04-02/jquery-1.7.1.js"><script>

var c;//获取到的2d画板
var painting = false;//判断是否正在绘画,即鼠标左键是否长按下去
var canvas;//画板
$(function(){

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

canvas=document.getElementById("myCanvas");
c=canvas.getContext("2d");
c.lineCap="round";//设置笔迹边角,否则笔迹会出现断层
c.strokeStyle="black";//笔迹的颜色
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.strokeStyle="white";

$("#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 class="opt" value="red">红色</option>
<option class="opt" value="yellow">黄色</option>
<option class="opt" value="blue">蓝色</option>
<option class="opt" value="black" selected>黑色</option>
<option class="opt" 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 class="eraseSeries"> <!--橡皮大小-->
<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>

<!--<button id="btn">btn</button>-->
<canvas id="myCanvas" width="1420" height="780" style="border: solid"></canvas> <!--整个画布-->

<div id="eraseImg"> <!--橡皮形状-->
</div>

</body>
</html>
标签:
html5,画板

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com

评论“html5+javascript制作简易画板附图”

暂无“html5+javascript制作简易画板附图”评论...

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?