這篇文章主要介紹“怎么用html5和JavaScript創(chuàng)建一個(gè)繪圖程序”,在日常操作中,相信很多人在怎么用html5和JavaScript創(chuàng)建一個(gè)繪圖程序問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”怎么用html5和JavaScript創(chuàng)建一個(gè)繪圖程序”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
目前成都創(chuàng)新互聯(lián)公司已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、宿州網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
本文將引導(dǎo)你使用canvas和JavaScript創(chuàng)建一個(gè)簡單的繪圖程序。
首先準(zhǔn)備容器Canvas元素,接下來所有的事情都會(huì)在JavaScript里面。
XML/HTML Code復(fù)制內(nèi)容到剪貼板
獲取繪圖環(huán)境,context對(duì)象提供了用于在畫布上繪圖的方法和屬性
XML/HTML Code復(fù)制內(nèi)容到剪貼板
context = document.getElementById('canvasInAPerfectWorld').getContext("2d");
開始繪圖過程
首先我們需要存儲(chǔ)繪圖路徑點(diǎn)坐標(biāo),addClick函數(shù)添加坐標(biāo)點(diǎn)值到數(shù)組
JavaScript Code復(fù)制內(nèi)容到剪貼板
var clickX = new Array();
var clickY = new Array();
var clickDrag = new Array();//存儲(chǔ)路徑點(diǎn)
var paint;//是否繪制,mousedown時(shí)置為true
function addClick(x, y, dragging)
{
clickX.push(x);
clickY.push(y);
clickDrag.push(dragging);
}
redraw函數(shù)每次調(diào)用整個(gè)canvas就會(huì)重新繪制一次。首先我們清空畫布上內(nèi)容,設(shè)置繪制線條顏色粗細(xì)線條連接方式。然后
兩點(diǎn)之間繪制一段路徑,將數(shù)組中的坐標(biāo)點(diǎn)依次繪制出來
XML/HTML Code復(fù)制內(nèi)容到剪貼板
function redraw(){
context.clearRect(0, 0, context.canvas.width, context.canvas.height); // 清除畫布內(nèi)容
context.strokeStyle = "#df4b26";//設(shè)置線條顏色
context.lineJoin = "round";//當(dāng)兩條線條交匯時(shí),創(chuàng)建圓形邊角
context.lineWidth = 5;//線條粗細(xì)
for(var i=0; i < clickX.length; i++) {
context.beginPath();//開始一條路徑,或重置當(dāng)前的路徑
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.stroke();//繪制路徑
}
}
繪制過程需要的事件
1 mousedown事件
繪圖這點(diǎn)擊到畫布上時(shí),將觸發(fā)該事件執(zhí)行。調(diào)用了addClick函數(shù),并將paint置為true。
JavaScript Code復(fù)制內(nèi)容到剪貼板
$('#canvas').mousedown(function(e){
var mouseX = e.pageX - this.offsetLeft;
var mouseY = e.pageY - this.offsetTop;
paint = true;
addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
redraw();
});
2 mousemove事件
mousedown中設(shè)置的paint為true后,鼠標(biāo)移動(dòng)時(shí)觸發(fā)mousemove事件執(zhí)行,將鼠標(biāo)移動(dòng)的所有點(diǎn)記錄下來,并不斷調(diào)用redraw重繪畫布。
JavaScript Code復(fù)制內(nèi)容到剪貼板
$('#canvas').mousemove(function(e){
if(paint){
addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true);
redraw();
}
});
3 mouseup事件
mouseup鼠標(biāo)點(diǎn)擊后松開或者拖拽后松開,表示繪制完成該路徑,將paint置為false。
XML/HTML Code復(fù)制內(nèi)容到剪貼板
$('#canvas').mouseup(function(e){
paint = false;
});
4 mouseleave事件
mouseleave鼠標(biāo)離開canvas元素,將paint置為false。
XML/HTML Code復(fù)制內(nèi)容到剪貼板
$('#canvas').mouseleave(function(e){
paint = false;
});
到此,關(guān)于“怎么用html5和JavaScript創(chuàng)建一個(gè)繪圖程序”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!