韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 網(wǎng)頁設(shè)計教程 > 詳細頁面

HTML5 canvas畫帶箭頭的虛線

HTML5 canvas畫帶箭頭的虛線

更新時間:2023-06-11 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

網(wǎng)頁的本質(zhì)就是超級文本標(biāo)記語言,通過結(jié)合使用其他的Web技術(shù)(如:腳本語言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強大的網(wǎng)頁。因而,超級文本標(biāo)記語言是萬維網(wǎng)(Web)編程的基礎(chǔ),也就是說萬維網(wǎng)是建立在超文本基礎(chǔ)之上的。超級文本標(biāo)記語言之所以稱為超文本標(biāo)記語言,是因為文本中包含了所謂“超級鏈接”點。

今天給大家講解的是在HTML5 canvas畫帶箭頭的虛線。關(guān)于Canvas 對象表示一個 HTML 畫布元素 -<canvas>。它沒有自己的行為,但是定義了一個 API 支持腳本化客戶端繪圖操作。

本案例注意事項:

1、當(dāng)你拖動箭頭時 canvas里面線條繪制自動重新計算點。

2、canvas沒有畫虛線的api,因為對api不是很熟悉,所以就不獻丑了,在網(wǎng)上找的。

3、箭頭出來后 點擊畫布里面的任意點 箭頭將延伸到該處,至于具體的應(yīng)用 修改canvas的lineTo屬性就能實現(xiàn)了。

4、具體的代碼解釋我寫的比較清楚,修改箭頭樣式只需寫過lineTo即可,非常簡單。

效果如下:

HTML5 canvas畫帶箭頭的虛線

請點擊canvas畫帶箭頭的虛線 下載本實例相關(guān)素材及源碼

代碼如下:

<!--程序說明:
作者:xue51
描述:該程序主要是通過exchange的支持在IE下面實現(xiàn)canvas畫帶箭頭的虛線功能,常用于圖形化工作流的設(shè)計當(dāng)中。
     雖然在IE下面可以用vml實現(xiàn),但是這個就是用來取代vml的。。。!HTML5都來了趕緊消滅老IE
注意事項: 1, 該程序是在老外的canvas畫虛線的基礎(chǔ)上做了改進;
         2, exchange需要2個額外的JS文件指出。
         3,使用的時候在畫布上隨意點點就就能改變箭頭的方向,至于更使用的功能需要您來親自寫寫。
-->
<!DOCTYPE HTML>
<html lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>HTML Canvas Dotted Lines</title>
<style type="text/css" media="screen">
body { background:#ddd; text-align:center; }
canvas { margin:2em auto; display:block; border:1px solid #666; }
label { padding-right:2em }
</style>
<script type="text/javascript" src="excanvas.js" ></script>
<script type="text/javascript" src="jCanvaScript.1.5.15.min.js" ></script>
</head>
<body>
<!--這個地方需要注意,在IE下面經(jīng)過轉(zhuǎn)換如果不在這里設(shè)置canvas的高和寬就會造成畫布很小-->
<canvas width="800" height="600"></canvas>
    <p>
        <label>Line Width: <input id="width" value="2" size="1"></label>
        <label>Dashes/Gaps: <input id="dashes" value="10 20" size="15"></label>
        <label>Line Cap: <select id="linecap"><option>butt</option><option selected>round</option><option>square</option></select></label>
    </p>
    
 <!--這個是老外寫的用canvas畫虛線的方法,直接使用-->
<script type="text/javascript" charset="utf-8">
if (window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype.lineTo){
CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){
if (!dashArray) dashArray=[10,5];
var dashCount = dashArray.length;
this.moveTo(x, y);
var dx = (x2-x), dy = (y2-y);
var slope = dy/dx;
var distRemaining = Math.sqrt( dx*dx + dy*dy );
var dashIndex=0, draw=true;
while (distRemaining>=0.1 && dashIndex<10000){
var dashLength = dashArray[dashIndex++%dashCount];
if (dashLength==0) dashLength = 0.001; // Hack for Safari
if (dashLength > distRemaining) dashLength = distRemaining;
var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) );
x += xStep
y += slope*xStep;
this[draw ? 'lineTo' : 'moveTo'](x,y);
distRemaining -= dashLength;
draw = !draw;
}
// Ensure that the last segment is closed for proper stroking
//this.moveTo(0,0);
}
}
</script>
<script type="text/javascript" charset="utf-8">
var c = document.getElementsByTagName('canvas')[0];
c.width = 800; c.height = 600;
var defaultX = 350, defaultY = 350;
function drawArr(x, y){
//值初始化,default用于頁面沒有點擊的時候初始化。
var x, y, arr;
if(0 == arguments.length) {
x = 667;
y= 470;
}
else {
x = x;
y= y;
}
var ctx = c.getContext('2d');
ctx.strokeStyle = 'black';
//這3個是用來獲取頁面的自動設(shè)置配置。
var width = document.getElementById('width');
var linecap = document.getElementById('linecap');
var dashes = document.getElementById('dashes');
//這個是核心用來畫每個線段。
var drawDashes = function(){
ctx.clearRect( 0, 0, c.width, c.height );
var dashGapArray = dashes.value.replace(/^\s+|\s+$/g,'').split(/\s+/);
if (!dashGapArray[0] || (dashGapArray.length==1 && dashGapArray[0]==0)) return;
ctx.lineWidth = width.value;
ctx.lineCap = linecap.value;
ctx.beginPath();
ctx.fillStyle = "#8BC54B";
ctx.strokeStyle = 'rgb(0, 0, 100)'
//開始畫虛線。
//當(dāng) x > 起始點的x坐標(biāo)(即點擊點 在起始點的右邊)的時候 不需要 改變這4個坐標(biāo),但是當(dāng)x < 起始點的X坐標(biāo)(點擊點在起始點左邊的時候)需要改變這4個坐標(biāo)的位置
if(x > defaultX) {
ctx.dashedLine(defaultX, defaultY, x, y, dashGapArray );
}
else {
ctx.dashedLine(x, y, defaultX, defaultY, dashGapArray );
}
//虛線畫完了開始畫箭頭的4個線段
//計算4個點的坐標(biāo)
arr = jisuan(x, y);
//設(shè)定開始點。
ctx.moveTo(arr[0],arr[1]);
ctx.lineTo(x,y)
ctx.lineTo(arr[2],arr[3]);
//下面這個計算是用來在箭頭與虛線的交叉點。直角三角形計算原理。。
ctx.lineTo(x-parseInt(25*Math.cos(arr[4]*Math.PI/180)), y-parseInt(25*Math.sin(arr[4]*Math.PI/180)));
ctx.lineTo(arr[0],arr[1]);
ctx.closePath();
ctx.stroke();
};
drawDashes();
width.onkeyup = drawDashes;
linecap.onchange = drawDashes;
dashes.onkeyup = drawDashes;
}
//該函數(shù)用來根據(jù)鼠標(biāo)點擊點 計算箭頭4個點的坐標(biāo),在JS中cos和SIN都是計算的弧度,所以需要轉(zhuǎn)換。至于計算方法屬于屬性范疇這里不累述。
//對于該函數(shù),如果需要修改箭頭的大小 只需修改 45: 箭頭兩邊的長度; 35:箭頭與中間虛線的角度即可。
function jisuan(x, y) {
var angle = parseInt(Math.atan2(y-defaultX,x-defaultY)/Math.PI*180);
var arr = [];
arr[0] = x - parseInt(45 * Math.cos(Math.PI/180*(angle - 35)));
arr[1] = y - parseInt(45 * Math.sin(Math.PI/180*(angle - 35)));
arr[2] = x - parseInt(45 * Math.cos(Math.PI/180*(angle + 35)));
arr[3] = y - parseInt(45 * Math.sin(Math.PI/180*(angle + 35)));
arr[4] = angle
return arr;
}
drawArr();
document.body.onmousedown = function(event) {
var event = event || window.event;
var mousePos = getMousePos(event);
drawArr(mousePos.x, mousePos.y);

}


getMousePos  = function(event) {
if (event.pageX || event.pageY) {
mousePos = {
x: event.pageX,
y: event.pageY
};
}
/*ie 與 ff的邊界 處理不同*/
if (!+"\v1") {
mousePos = {
x: event.clientX,
y: event.clientY
}
}
else {
mousePos = {
x:event.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,
y:event.clientY+document.body.scrollTop+document.documentElement.scrollTop
}
}
//return mousePos
//程序到這里就是一個標(biāo)準(zhǔn)獲取頁面上鼠標(biāo)的坐標(biāo)函數(shù),下面的代碼是因為 畫布的點不是以瀏覽器的左上角為起始點所以需要減去多余的距離方法如下:
var pos = c.getBoundingClientRect();
mousePos.x = mousePos.x - pos.left;
mousePos.y = mousePos.y - pos.top;
return mousePos;
}
</script>
</body>
</html>

以上就是通過HTML5 canvas畫帶箭頭的虛線的全部內(nèi)容,請繼續(xù)關(guān)注本站教程網(wǎng)。


網(wǎng)站建設(shè)是一個廣義的術(shù)語,涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護的網(wǎng)站。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

欧美国产日本视频| 91九色porn| 久久精品视频在线看| 国产精品久久久高清免费| 在线播放一区二区精品产| 偷拍一区二区| 亚洲久久久久久久久久久| 不卡高清视频专区| 亚洲精品在线一区二区| 激情深爱综合网| 亚洲图色在线| 不卡一区综合视频| 日本高清成人免费播放| 亚洲国产精品毛片av不卡在线| 五月婷婷激情在线| 国产精品一在线观看| 女~淫辱の触手3d动漫| 九色精品国产蝌蚪| 黄动漫在线看| 看全色黄大色黄女片18| 久久久久久久久电影| 看全色黄大色大片免费久久久| 亚洲中文字幕无码专区| 日本精品视频在线播放| 亚洲日本va在线观看| 国产美女福利在线| 最新国产热播激情视频| 亚洲无线视频| 欧美一级专区免费大片| 欧美国产日韩二区| 国产精品免费99久久久| 在线免费黄色毛片| 曰皮视频在线播放免费的| 你懂得在线视频| 国产精品91久久久久久| gogogo免费视频观看亚洲一| 你懂的视频在线免费| 久久九九国产精品怡红院| 青青草原国产免费| 91精品国产自产在线观看永久| 嫩草香蕉在线91一二三区| 精品91一区二区三区| 中文字幕乱码无码人妻系列蜜桃| 91精品国产综合久久久久久久久| 亚洲精品乱码久久久久久日本蜜臀| 久久久久久久久久一区| www.日日操| 88国产精品欧美一区二区三区| 色综合久久天天综合网| 成人亚洲精品| 夜夜骑日日操| 日韩黄色av网站| 国产超碰精品| 欧美尺度大的性做爰视频| 日韩精品久久久| 97国产精品免费视频| 国产精品少妇在线视频| 国产精品一区二区三区不卡| 国产一二三区在线观看| 久久久91精品国产一区二区三区| 日本一区二区三区高清不卡| 九色视频成人porny| 国产91丝袜在线播放0| 91免费国产网站| 国产欧美自拍| 中文字幕中文字幕在线一区| 香蕉影视欧美成人| 欧美色婷婷久久99精品红桃| 亚洲天天影视| 亚洲激情一二三区| 国模吧无码一区二区三区| 久久精品一区二区三| 激情综合电影网| 久久久久久久国产精品毛片| 欧美日韩亚洲综合| 特黄特色免费视频| www.国产麻豆| 欧美日韩国产欧美日美国产精品| 久久国产高清| 欧美二区在线播放| 图片专区亚洲欧美另类| 全部孕妇毛片丰满孕妇孕| 国产一级视频在线观看| 日本成人在线不卡| 久久亚洲专区| 亚洲免费网址| 久久精品网站免费观看| 成人福利网站| 一级特黄毛片| 一区二区三区偷拍| 91亚洲永久免费精品| 啪啪一区二区三区| 亚洲欧美日韩图片| 国产欧美成人| 日韩精品一区二区不卡| 在线观看av的网址| 伊人久久av| 国产日产高清欧美一区二区三区| 国产免费一区二区三区在线能观看| 91欧美精品成人综合在线观看| 亚洲天堂一区二区在线观看| 精品一区二区在线欧美日韩| 狠狠色狠狠色综合| 无码人妻精品一区二区三应用大全| 国产黑丝在线一区二区三区| 97超碰中文字幕| 精品国产999| 伊人75在线| 欧美一区2区视频在线观看| 免费在线观看的av网站| 国产伦精品一区三区精东| 亚洲国产av一区二区三区| 久久色精品视频| 成人线上播放| 久久99蜜桃精品| 99久免费精品视频在线观看| 国产精品xx| 亚洲优女在线| 国精产品一区一区三区四川| 插插插亚洲综合网| 国产成人久久婷婷精品流白浆| 国产一区国产精品| 久久青草精品视频免费观看| 久久影视中文粉嫩av| 亚洲免费一区二区| 九九在线观看视频| 日韩精品综合在线| 在线观看一区| 午夜一级黄色片| 亚洲国产专区| 激情小说亚洲色图| 久久久精品99| 亚洲欧美国产中文| gogo亚洲高清大胆美女人体| 欧美黄色免费影院| 日本视频免费观看| 久久婷婷久久一区二区三区| 成人精品一区二区三区电影黑人| www.99在线| 精品视频色一区| 国产亚洲一二三区| 人人妻人人澡人人爽| 久久亚洲私人国产精品va| 国产精品毛片一区视频播| 国产精品视频流白浆免费视频| 丁香五六月婷婷久久激情| 超碰caoporn久久| 久久久久久久久黄色| 天天操天天摸天天舔| 国产免费自拍视频| 久久综合av| 欧美激情在线狂野欧美精品| 波多野结衣片子| 日韩一区二区三区免费看| 久草免费福利视频| 亚洲一区三区| 中文字幕av资源| 97精品资源在线观看| 国产精品一色哟哟| 台湾无码一区二区| 欧美性xxxxxx少妇| 色婷婷**av毛片一区| jizzjizz19| 日本少妇bbwbbw精品| 国产91在线播放| 亚洲激情男女视频| 日本护士...精品国| 国产精品第8页| jizzjizzjizz在线观看| 精品国产不卡一区二区三区| 奇米精品一区二区三区四区| 久久精品国产69国产精品亚洲| 精品系列免费在线观看| 日韩电影免费在线观看网站| 久久精品人人做人人爽电影蜜月| 久久高清一区| 久久精品理论片| 九九这里只精品视在线99| 亚洲精品成人久久电影| 中文字幕一区二区三区人妻不卡| www.黄色片| 色88888久久久久久影院| 欧美在线观看网站| 椎名由奈jux491在线播放| 亚洲国产精品久久久男人的天堂| 蜜臀av一区二区在线免费观看| 久热久热免费视频中文字幕777| 男人皇宫亚洲男人2020| 日韩少妇与小伙激情| 日韩精品一区二区三区在线| 亚洲成人日韩在线| 色爱av综合网| 国产精品欧美一区二区三区不卡| 欧美一区二区二区| 国产欧美日韩视频一区二区三区| 国产午夜精品久久久久久免费视| 日韩欧美国产成人| 成人香蕉视频| 国产精品女人久久久久久| 日本1区2区3区中文字幕| 欧美久久久久久久久久久久久久| 亚洲精品国产系列| 欧美日韩成人综合在线一区二区| 国产极品嫩模在线观看91精品| 在线 亚洲欧美在线综合一区| 日韩欧美精品网站| 97国产成人精品视频| 国产黄色一区| 欧美午夜精品一区二区三区电影| 亚洲最快最全在线视频| 欧美日韩一区综合| 欧美 日韩 国产 一区二区三区| 国产又粗又长又硬| 久久免费成人精品视频| 日本一区二区免费高清视频| 自拍偷拍欧美日韩| 狠久久av成人天堂| aaa免费在线观看| 男人操女人的视频网站| 激情综合一区二区三区| 在线观看精品自拍视频| 最近2019好看的中文字幕免费| 超碰超碰人人人人精品| 国产精品美女呻吟| 麻豆网址在线观看| 欧美激情777| 在线观看免费版| 美女被啪啪一区二区| 亚洲国产精品成人精品| 日韩一区二区三区高清| 116极品美女视频在线观看| 日韩女同一区二区三区| 国产亚洲久久| 97久久超碰国产精品| 三区视频在线观看| 亚洲国产高清一区| 国产jizzjizz一区二区| 欧美视频一区二区三区在线观看| 欧美精品情趣视频| 可以免费看黄色的网站| 日本10禁啪啪无遮挡免费一区二区| 日本一区二区免费不卡| 天堂а√在线中文在线鲁大师| 亚洲国产一区二区三区| 97香蕉超级碰碰久久免费的优势| 日本精品免费一区二区三区| 国产亚洲精品久久久网站好莱| 国产精品福利小视频| 毛片在线不卡| 久久综合九九| 蜜桃av免费看| 97香蕉超级碰碰久久免费软件| 无码国产精品一区二区免费式直播| 91精品视频免费在线观看| 欧美三级视频网站| 91久久大香伊蕉在人线| 国产精品一区二区三区观看| 免费激情网址| 国产一区欧美| 青青草原免费观看| 国产剧情久久久| 亚洲区小说区| 国产一区二区三区视频免费观看| 波多野结衣 作品| 日本护士做爰视频| 老太脱裤子让老头玩xxxxx| 一本高清dvd不卡在线观看| 三上悠亚ssⅰn939无码播放| www.国产成人| 久久精品日韩一区二区三区| 日韩一级视频免费观看在线| 国产精品国产精品国产| 欧美一级手机免费观看片| 亚洲精品**不卡在线播he| 亚洲视频网在线直播| 亚洲成人人体| 欧美3p视频在线观看| h视频在线播放| 欧美精品v国产精品v日韩精品| 91综合久久一区二区| 国产精品99精品无码视亚| 精品无人码麻豆乱码1区2区| 黄色性生活一级片| 欧美在线免费视频| 国产日韩欧美一区在线| 在线观看h网| 久久免费国产精品1| 91久久国产最好的精华液| 亚洲图片欧美综合| 亚洲韩国欧洲国产日产av| 91成人精品网站| 亚洲成av人影院在线观看网| 国产精品444| av成人动漫| 中文字幕在线播放一区| 先锋影音网一区| 久久精品国产欧美激情| 十大免费污污软件| 欧洲日韩一区二区三区| 三级视频中文字幕| 国产日本一区二区| 99re这里有精品| 9色精品在线| 日韩高清精品免费观看| 一区二区三区日韩欧美精品| 精品国产一区二区三区久久| 神马久久久久久久久久久| 国产精品中文欧美| 91久久久久久久久久| 欧美成人网在线| 亚洲综合在线观看视频| 国产在线观看第一页| 欧美大黑帍在线播放| 亚洲自拍偷拍av| 欧美精品国产| xxxxxx在线观看| 国产h色视频在线观看| 狠狠综合久久av一区二区小说| 中文字幕 欧美激情| 91丝袜美腿美女视频网站| 日韩一级片免费观看| 91啪亚洲精品| 成人免费视频网站入口::| www欧美在线| 青青草久久爱| 夜夜骑日日操| 国产性网软件大全| 欧美蜜桃一区二区三区|