當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  編程技術(shù) >  正文

canvas 繪圖時(shí)位置偏離的問(wèn)題解決

 2020-10-15 11:32  來(lái)源: 腳本之家   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

這篇文章主要介紹了canvas 繪圖時(shí)位置偏離的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

使用 canvas 繪圖時(shí),指定的 div 大小一定不要超過(guò)該 div 所能獲得的最大范圍,否則繪制的點(diǎn)會(huì)跟實(shí)際位置發(fā)生偏離。

例如

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>
<style type="text/css">
.style1 {
  font-size: x-small;
}
</style>

</head>
 
<body >
    <div style="margin:2%">
            <div id="test" style="width:800px;height:800px;background-color:#cbdad0d9">
                    <canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
            </div>
    </div>
   
    <script type="text/javascript">
        var paint = false;
        var start = false;
        var canvas = document.getElementById("container");
        canvas.width = 800;
        canvas.height = 800;
        var offsetY = canvas.offsetTop;
        var offsetX = canvas.offsetLeft;
        var y;
        var x;
        var context = canvas.getContext("2d");
   
        function mousemove(e) {
            if (paint == true){
                if (start == false){
                    context.moveTo(0, 0);
                    start = true;
                } else {
                    context.moveTo(x, y);
                }

                x = e.pageX - offsetX;
                y = e.pageY - offsetY;
                context.lineTo(x, y);
                context.stroke();
            }
        }
   
        function mousedown(event) {
            paint = true;
            console.log("down")
        }
   
        function mouseup(event) {
            paint = false;
            console.log("up")
        }
   
    </script>
</body>
</html>

上例中可以正確的繪制線(xiàn)圖。

如果更改為:

    <div style="margin:20%">
            <div id="test" style="width:800px;height:800px;background-color:#cbdad0d9">
                    <canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
            </div>
    </div>

由于canvas所需width 800px無(wú)法滿(mǎn)足,因此繪制線(xiàn)圖時(shí),與實(shí)際鼠標(biāo)位置發(fā)生偏離。

到此這篇關(guān)于canvas 繪圖時(shí)位置偏離的問(wèn)題解決的文章就介紹到這了,更多相關(guān)canvas 繪圖位置偏離內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

來(lái)源:腳本之家

鏈接:https://www.jb51.net/html5/745325.html

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

熱門(mén)排行

信息推薦