最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

html5+javascript制作簡(jiǎn)易畫板附圖

 更新時(shí)間:2014年04月25日 15:02:47   作者:  
這篇文章主要介紹了使用html5+javascript制作的簡(jiǎn)易畫板,需要的朋友可以參考下
見圖:

 

代碼如下:
復(fù)制代碼 代碼如下:

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

<title>簡(jiǎn)易畫板</title>

<style>
#eraseImg{ /*橡皮樣式*//**/
border:solid;
color:gray;
border-radius: 118px;
width: 5px;
height: 5px;
position: absolute;
display: none;

}
.eraseSeries{ /*橡皮大小單選按鈕組的排列,此div不單獨(dú)占一行*/
display: inline-block;
}

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

var c;//獲取到的2d畫板
var painting = false;//判斷是否正在繪畫,即鼠標(biāo)左鍵是否長(zhǎng)按下去
var canvas;//畫板
$(function(){

$(".eraseSeries").hide();//初始狀態(tài)單選按鈕組隱藏

canvas=document.getElementById("myCanvas");
c=canvas.getContext("2d");
c.lineCap="round";//設(shè)置筆跡邊角,否則筆跡會(huì)出現(xiàn)斷層
c.strokeStyle="black";//筆跡的顏色
c.lineWidth=5;//筆跡的粗細(xì)
$("#color").change(function(){//筆跡顏色發(fā)生改變時(shí)
if(eraseFlag==true)//處在擦皮狀態(tài)
{
$("#erase").trigger("click");//自動(dòng)觸發(fā)橡皮的點(diǎn)擊事件,以返回到畫筆狀態(tài)
}
c.strokeStyle=$(this).val();//設(shè)置畫筆狀態(tài)
c.lineWidth=$(this).val();

});

$("#fontSize").change(function(){//畫筆粗細(xì)發(fā)生改變
if(eraseFlag==true)//同上
{
$("#erase").trigger("click");
}
c.lineWidth=$(this).val();
c.strokeStyle=$("#color").val();
//eraseFlag=false;
});

$(".eraseSeries").click(function(){//橡皮大小發(fā)生改變
var size=$('input[name="eraseSize"]:checked').val();//獲取到橡皮單選按鈕組的選中值
sizeE=size;//將該值傳到全局變量上,sizeE需要用來(lái)控制橡皮樣式的位置
c.lineWidth=size;
$("#eraseImg").css({"width" :size+"px","height":size+"px"});//橡皮樣式大小發(fā)生改變
});

$("#erase").toggle(function(){//橡皮按鈕的點(diǎn)擊翻轉(zhuǎn)事件
c.save();//保持上次設(shè)置的狀態(tài)
eraseFlag=true;
c.strokeStyle="white";

$("#erase").text("畫筆");//改變按鈕上的文字
$(".eraseSeries").show('fast');//橡皮單選組出現(xiàn)
// $("#eraseImg").show();
sizeE=5;


},function(){
eraseFlag=false;
$("#erase").text("橡皮");
$(".eraseSeries").hide('fast');
c.restore();//恢復(fù)上次畫筆的狀態(tài)(包括顏色,粗細(xì)等)
});


//setInterval(paint,2);

});

var p_x;//上次鼠標(biāo)位置
var p_y;
var p_x_now;//當(dāng)前瞬間鼠標(biāo)位置
var p_y_now;
var eraseFlag=false;
var sizeE;//橡皮大小

$(document).mousedown(function(e){//鼠標(biāo)按下觸發(fā)事件


// alert(sizeE);
p_x= e.clientX;//獲取位置,并置為上次鼠標(biāo)位置
p_y= e.clientY;
painting = true;//畫筆啟動(dòng)標(biāo)志

});
$(document).mousemove(function(e){//鼠標(biāo)移動(dòng)觸發(fā)事件
if(eraseFlag==true&& e.clientY>30)//橡皮處在激活狀態(tài),并且鼠標(biāo)Y的位置大于30,也即鼠標(biāo)在畫板內(nèi)
{

//橡皮圖像跟隨鼠標(biāo)而動(dòng)
$("#eraseImg").animate({left: e.clientX-sizeE+"px",top: e.clientY-sizeE+"px"},0).show('fast');
}
else
{
$("#eraseImg").hide('fast');
}
if(painting==true)//處于畫筆激活狀態(tài)
{
//alert(1);
p_x_now= e.clientX;//當(dāng)前瞬間的鼠標(biāo)位置
p_y_now= e.clientY;
c.beginPath();//開始路徑
//曲線是由一段段非常小的直線構(gòu)成,計(jì)算機(jī)運(yùn)算速度很快,這是一種以直線迭代畫曲線的方式
c.moveTo(p_x-5-canvas.offsetLeft,p_y-5-canvas.offsetTop);//移動(dòng)到起始點(diǎn)
c.lineTo(p_x_now-5-canvas.offsetLeft,p_y_now-5-canvas.offsetTop);//從起始點(diǎn)畫直線到終點(diǎn)

c.stroke();
c.closePath();//封閉路徑,這個(gè)很重要,如果路徑不封閉,
// 那么只要canvas顏色發(fā)生改變,所有的之前畫過(guò)的顏色都發(fā)生改變
p_x = p_x_now;//一次迭代后講當(dāng)前的瞬間坐標(biāo)值賦給上次鼠標(biāo)坐標(biāo)值
p_y = p_y_now;
}

});

$(document).mouseup(function(e){//鼠標(biāo)松開觸發(fā)事件

painting=false;//凍結(jié)畫筆
});

</script>
</head>
<body>
<div >
<select id="color" > <!--畫筆顏色-->
<option class="opt" value="red">紅色</option>
<option class="opt" value="yellow">黃色</option>
<option class="opt" value="blue">藍(lán)色</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> <!--整個(gè)畫布-->

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

</body>
</html>

相關(guān)文章

  • ?typeScript入門基礎(chǔ)介紹

    ?typeScript入門基礎(chǔ)介紹

    這篇文章主要介紹了?typeScript入門基礎(chǔ),TypeScript?是由微軟開發(fā)的開源、跨平臺(tái)的編程語(yǔ)言,是?javaScript?的超集,最終被編譯為?javaScript代碼。常常被簡(jiǎn)稱為TS支持JS、ES語(yǔ)法,下文將繼續(xù)其他基礎(chǔ)介紹,需要的朋友可以參考一下
    2022-02-02
  • JavaScript取得WEB安全顏色列表的方法

    JavaScript取得WEB安全顏色列表的方法

    這篇文章主要介紹了JavaScript取得WEB安全顏色列表的方法,分析了web安全顏色的定義及javascript獲取web安全顏色的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • JavaScript Serializer序列化時(shí)間處理示例

    JavaScript Serializer序列化時(shí)間處理示例

    JavaScriptSerializer序列化時(shí)間后會(huì)把時(shí)間序列化成N進(jìn)制的鬼數(shù)據(jù) ,下面有個(gè)示例,需要的朋友可以了解下
    2014-07-07
  • bootstrap table實(shí)現(xiàn)雙擊可編輯、添加、刪除行功能

    bootstrap table實(shí)現(xiàn)雙擊可編輯、添加、刪除行功能

    這篇文章主要為大家詳細(xì)介紹了bootstrap table實(shí)現(xiàn)雙擊可編輯、添加、刪除行功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • JavaScript 數(shù)組的進(jìn)化與性能分析

    JavaScript 數(shù)組的進(jìn)化與性能分析

    這篇文章主要介紹了JavaScript 數(shù)組的進(jìn)化與性能分析,本文講得更多的是內(nèi)存、優(yōu)化、語(yǔ)法差異、性能、近來(lái)的演進(jìn)。需要的朋友可以參考下
    2017-09-09
  • Kendo Grid editing 自定義驗(yàn)證報(bào)錯(cuò)提示的解決方法

    Kendo Grid editing 自定義驗(yàn)證報(bào)錯(cuò)提示的解決方法

    Kendo UI是一個(gè)強(qiáng)大的框架用于快速HTML5 UI開發(fā)?;谧钚碌腍TML5、CSS3和JavaScript標(biāo)準(zhǔn)。今天小編通過(guò)分享本文給大家介紹Kendo Grid editing 自定義驗(yàn)證報(bào)錯(cuò)提示的解決方法
    2016-11-11
  • JS中使用media實(shí)現(xiàn)響應(yīng)式布局

    JS中使用media實(shí)現(xiàn)響應(yīng)式布局

    本文通過(guò)代碼給大家總結(jié)了常見的響應(yīng)式布局media的使用方法,感興趣的朋友參考下吧
    2017-08-08
  • 微信小程序中this.data與this.setData的區(qū)別詳解

    微信小程序中this.data與this.setData的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于微信小程序中this.data與this.setData區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧
    2018-09-09
  • JavaScript中innerHTML使用方法實(shí)例

    JavaScript中innerHTML使用方法實(shí)例

    js中常常用到innerHTML,其作用就是獲取到標(biāo)簽里面的內(nèi)容,同時(shí)也可以為標(biāo)簽添加內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于JavaScript中innerHTML使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • javascript使用正則控制input輸入框允許輸入的值方法大全

    javascript使用正則控制input輸入框允許輸入的值方法大全

    在做項(xiàng)目的時(shí)候,我們經(jīng)常會(huì)遇到控制input輸入框允許輸入的值為數(shù)字,字母,漢字或者混排的情況,那么我們?cè)趺磥?lái)處理呢,下面我們就來(lái)探討怎么通過(guò)用javascript正則來(lái)實(shí)現(xiàn)
    2014-06-06

最新評(píng)論

金沙县| 龙口市| 宁波市| 米易县| 潢川县| 咸阳市| 津市市| 景洪市| 吉木萨尔县| 嘉荫县| 醴陵市| 万盛区| 晋宁县| 湘乡市| 张家界市| 子长县| 苏尼特右旗| 常州市| 乾安县| 宁晋县| 鄂尔多斯市| 阳西县| 宜阳县| 富蕴县| 中卫市| 五指山市| 洪湖市| 临沂市| 藁城市| 南部县| 泰顺县| 舒城县| 甘德县| 桐乡市| 南汇区| 镇康县| 广德县| 水城县| 渑池县| 曲松县| 清水河县|