最近閒的,看了看html5,強大的繪圖功能讓我驚奇,因而,寫了個小玩意---塗鴉板,能實現功能有:畫畫,改色,調整畫筆大小html
html5的繪圖能夠分爲點,線,面,圓,圖片等,點和線,這但是全部平面效果的基點,有了這兩個東西,沒有畫不出來的東西,只有想不到的算法。html5
先上代碼了:算法
htmlcanvas
1 <body style="cursor:pointer"> 2 <canvas id="mycavas" width="1024" height="400" style="border:solid 4px #000000"></canvas><!--畫布--> 3 <input type="color" id="color1" name="color1"/><!--設色器--> 4 <output name="a" for="color1" onforminput="innerHTML=color1.value"></output> 5 <input type="range" name="points" id="size" min="5" max="20" /><!--拖動條--> 6 </body>
效果:this
好了,一個簡陋的畫圖界面就搞好啦,spa
下面開始寫一些畫線的代碼3d
1 $.Draw = {}; 2 $.extend($.Draw, { 3 D2: "", 4 CX:"", 5 Box: "mycavas",//畫布id 6 BoxObj:function(){//畫布對象 7 this.CX=document.getElementById(this.Box); 8 }, 9 D2:function(){//2d繪圖對象 10 this.D2 = this.CX.getContext("2d"); 11 }, 12 Cricle: function (x, y, r, color) {//畫圓 13 if (this.D2) { 14 this.D2.beginPath(); 15 this.D2.arc(x, y, r, 0, Math.PI * 2, true); 16 this.D2.closePath(); 17 if (color) { 18 this.D2.fillStyle = color; 19 } 20 this.D2.fill(); 21 } 22 }, 23 init: function () {//初始化 24 this.BoxObj(); 25 this.D2(); 26 } 27 28 })
相信這裏的簡單代碼你們都看得懂,主要就是建立了一個對象,包含建立畫布,建立2d對象,畫圓方法,和對象初始化方法。code
接下里前臺html頁面來調用這個對象orm
看代碼:htm
1 var color = "#000000";//初始化顏色 2 var size = 5;//初始化尺寸 3 document.getElementById('color1').onchange = function () { 4 color = this.value; 5 }; 6 document.getElementById('size').onchange = function () { 7 size = this.value; 8 }; 9 $.Draw.init();//初始化 10 var tag = false;//控制鼠標當前狀態並起到開啓油墨開關的做用 11 var current = {};//存儲鼠標按下時候的點 12 document.onmousedown = function (option) {//鼠標按下事件 13 current.x = option.x; 14 current.y = option.y; 15 $.Draw.Cricle(option.x, option.y, size, color); 16 tag = true; 17 } 18 document.onmouseup = function () {//鼠標擡起事件 19 tag = false; 20 } 21 document.onmousemove = function (option) {//鼠標移動事件 22 if (tag) { 23 if (size >= 0) { 24 $.Draw.Cricle(option.x, option.y, size, color); 25 } 26 } 27 }
這段代碼主要有以下幾個意思
1.捕獲顏色空間和拖動條控件的change事件,從而獲取對應的顏色和尺寸的數值,存儲下來供下面畫線用
2.初始化畫圖對象
3.捕獲鼠標的按下,擡起和移動事件,關鍵在一個開關能夠控制油墨
好了,一個簡單的塗鴉板就行了,上個人書法:
是否是有點閒的蛋疼呢,呵呵!書法不如當年