HTML5中canvas怎么画虚线

HTML5中canvas怎么画虚线,第1张

var context = document.getElementById('canvas').getContext('2d')  

  

//求斜边长度  

function getBeveling(x,y)  

{  

    return Math.sqrt(Math.pow(x,2)+Math.pow(y,2))  

}  

  

function drawDashLine(context,x1,y1,x2,y2,dashLen)  

{  

    dashLen = dashLen === undefined ? 5 : dashLen  

    //得到斜边的总长度  

    var beveling = getBeveling(x2-x1,y2-y1)  

    //计算有多少个线段  

    var num = Math.floor(beveling/dashLen)  

      

    for(var i = 0  i < num i++)  

    {  

        context[i%2 == 0 ? 'moveTo' : 'lineTo'](x1+(x2-x1)/num*i,y1+(y2-y1)/num*i)  

    }  

    context.stroke()  

}  

  

drawDashLine(context,50,50,300,180,5)

具体有两种方法:

1、画虚线的图,然后插入网页中。缺点是这个虚线不能随意变动大小,因为拉伸图片会产生失真。

2、编程<div style="width:200pxheight:0pxborder-top:1px black dashed" />。缺点,不能改变方向。

还可以用svg,可以随意改变大小,粗细,方向,例子如下:

<html>

<head>

</head>

</head>

<body>

<svg

xmlns:dc="http://purl.org/dc/elements/1.1/"

xmlns:cc="http://creativecommons.org/ns#"

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:svg="http://www.w3.org/2000/svg"

xmlns="http://www.w3.org/2000/svg"

version="1.1"

width="500"

height="500"

id="svg2">

<defs

id="defs4" />

<metadata

id="metadata7">

<rdf:RDF>

<cc:Work

rdf:about="">

<dc:format>image/svg+xml</dc:format>

<dc:type

rdf:resource="http://purl.org/dc/dcmitype/StillImage" />

<dc:title></dc:title>

</cc:Work>

</rdf:RDF>

</metadata>

<g

transform="translate(0,-552.36218)"

id="layer1">

<path

d="m 68.571428,651.6479 239.999992,0"

id="path2985"

style="fill:nonestroke:#000000stroke-width:1stroke-linecap:buttstroke-linejoin:miterstroke-miterlimit:4stroke-opacity:1stroke-dasharray:1, 3stroke-dashoffset:0" />

</g>

</body>

</html>

缺点是不能直接在IE里用,火狐、Chrome等都没问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6303840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-20
下一篇 2023-03-20

发表评论

登录后才能评论

评论列表(0条)

保存