javascript實(shí)現(xiàn)畫板功能
本文實(shí)例為大家分享了javascript實(shí)現(xiàn)畫板功能的具體代碼,供大家參考,具體內(nèi)容如下
畫板功能的實(shí)現(xiàn)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
}
body{
background:url(11.jpg) 0 0 no-repeat;
}
.wrapper{
margin: 10px;
}
.wrapper canvas{
border: 1px solid blue;
border-radius:25px;
box-shadow: 10px 10px 5px brown;
margin-bottom: 16px;
background-color: #fff;
}
.wrapper .btn-list{
width: 1000px;
text-align: center;
}
.wrapper .btn-list li{
display: inline-block;
margin-left: 40px;
}
.wrapper .btn-list li input{
background-color: darkgreen;
color: blanchedalmond
border: none;
padding: 6px 13px;
cursor: pointer;
border-radius:25px;
font-size: 18px;
display: block;
transition-duration: 0.2s;
}
.wrapper .btn-list li input:hover{
border: 1px solid chocolate;
box-shadow: 0 12px 15px 0 rgba(0,0,0,0.5);
}
</style>
</head>
<body>
<!-- div.wrapper>canvas+ul.btn-list>li*5>input -->
<div class="wrapper">
<canvas class="cavs" width="1000" height="500"></canvas>
<ul class="btn-list">
<li><input type="color" id="colorBoard" value="colorBoard"></li>
<li><input type="button" id="cleanBoard" value="清屏"></li>
<li><input type="button" id="eraser" value="橡皮"></li>
<li><input type="button" id="rescind" value="撤銷"></li>
<li><input type="range" id="lineRuler" value="線條" min="1" max="30"></li>
</ul>
</div>
</body>
<script src="jquery-3.4.1.min.js"></script>
<script>
var drawingLineObj = {
cavs:$('.cavs'),
context:$('.cavs').get(0).getContext('2d'),
colorBoard:$('#colorBoard'),
cleanBoard:$('#cleanBoard'),
arrImg:[],
eraser:$("#eraser"),
rescind:$('#rescind'),
lineRuler:$('#lineRuler'),
bool:false,
init:function(){
this.context.lineCap = 'round'; //線條起始與結(jié)尾樣式
this.context.lineJoin = 'round'; //轉(zhuǎn)彎
this.draw(); //畫筆函數(shù)
this.btnFn(); //按鈕函數(shù)
},
draw:function(){
var cavs = this.cavs,
self = this;
var c_x = cavs.offset().left, //canvas離左邊的距離
c_y = cavs.offset().top; //canvas離上邊的距離
cavs.mousedown(function(e){
e = e||window.event;
self.bool = true;
var m_x = e.pageX - c_x, //鼠標(biāo)點(diǎn)距離減去canvas離左邊的距離等于畫布點(diǎn)
m_y = e.pageY - c_y; //鼠標(biāo)點(diǎn)距離減去canvas離上邊的距離等于畫布點(diǎn)
self.context.beginPath();
self.context.moveTo(m_x,m_y);//鼠標(biāo)在畫布上的點(diǎn)
var imgData = self.context.getImageData(0,0,self.cavs[0].width,self.cavs[0].height);
self.arrImg.push(imgData);
//console.log(self.arrImg);
})
cavs.mousemove(function(e){
if(self.bool){ //定義一把鎖,防止鼠標(biāo)移開滑動
self.context.lineTo(e.pageX-c_x,e.pageY-c_y);
self.context.stroke(); //繪制出路徑
}
})
cavs.mouseup(function(){
self.context.closePath(); //結(jié)束自動閉合
self.bool = false; //鼠標(biāo)不移動時畫筆斷開
})
cavs.mouseleave(function(){
self.context.closePath(); //結(jié)束自動閉合
self.bool = false; //鼠標(biāo)不移動時畫筆斷開
})
},
btnFn:function(){
var self = this;
$('.btn-list').on('click',function(e){
e = e||window.event;
switch(e.target.id){ //target
case 'cleanBoard':
self.context.clearRect(0,0,self.cavs[0].width,self.cavs[0].height) //[0]
break
case 'eraser':
self.context.strokeStyle = '#fff'
break
case 'rescind':
if(self.arrImg.length>0){
self.context.putImageData(self.arrImg.pop(),0,0);
break
}
}
})
this.colorBoard.change(function(e){ //當(dāng)顏色變化時改變字體的顏色
self.context.strokeStyle = $(this).val();
})
this.lineRuler.change(function(e){ //線條的變化值
self.context.lineWidth = $(this).val();
})
}
}
drawingLineObj.init();
</script>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js+canvas實(shí)現(xiàn)畫板功能
- JS實(shí)現(xiàn)canvas簡單小畫板功能
- javascript+Canvas實(shí)現(xiàn)畫板功能
- javascript簡易畫板開發(fā)
- Javascript HTML5 Canvas實(shí)現(xiàn)的一個畫板
- JS基于ocanvas插件實(shí)現(xiàn)的簡單畫板效果代碼(附demo源碼下載)
- html5+javascript制作簡易畫板附圖
- 純js網(wǎng)頁畫板(Graphics)類簡介及實(shí)現(xiàn)代碼
- 用javascript實(shí)現(xiàn)畫板的代碼
- JS canvas實(shí)現(xiàn)畫板和簽字板功能
相關(guān)文章
javascript 閃爍的圣誕樹實(shí)現(xiàn)代碼
用js實(shí)現(xiàn)非常漂亮的帶閃爍效果的圣誕樹代碼。很佩服作者的想法。效果如下圖。2009-12-12
微信小程序wx.request實(shí)現(xiàn)后臺數(shù)據(jù)交互功能分析
這篇文章主要介紹了微信小程序wx.request實(shí)現(xiàn)后臺數(shù)據(jù)交互功能,分析微信小程序wx.request在后臺數(shù)據(jù)交互過程中遇到的問題與相關(guān)的解決方法,需要的朋友可以參考下2017-11-11
一款JavaScript壓縮工具:X2JSCompactor
一款JavaScript壓縮工具:X2JSCompactor...2007-06-06
javascript實(shí)現(xiàn)表單驗(yàn)證
這篇文章主要介紹了javascript實(shí)現(xiàn)表單驗(yàn)證的相關(guān)資料,以一個完整的實(shí)例對javascript實(shí)現(xiàn)表單驗(yàn)證的方法進(jìn)行分析,感興趣的小伙伴們可以參考一下2016-01-01
JS注釋所產(chǎn)生的bug 即使注釋也會執(zhí)行
寫js時出現(xiàn)個bug一直提示我JAVA類中的一個屬性沒有,可是明明注釋掉了,后來才知道,JS里即使注釋也會執(zhí)行2013-11-11
Bootstrap CSS組件之面包屑導(dǎo)航(breadcrumb)
這篇文章主要為大家詳細(xì)介紹了Bootstrap CSS組件之面包屑導(dǎo)航(breadcrumb),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
javascript實(shí)現(xiàn)禁止右鍵和F12查看源代碼
這篇文章主要介紹了javascript實(shí)現(xiàn)禁止右鍵和F12查看源代碼的代碼,需要的朋友可以參考下2014-12-12

