您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“如何解決canvas繪圖位置偏離的問題”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何解決canvas繪圖位置偏離的問題”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
使用 canvas 繪圖時(shí),指定的 div 大小一定不要超過該 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 >
<div id="test" >
<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>
上例中可以正確的繪制線圖。
如果更改為:
<div >
<div id="test" >
<canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
</div>
</div>
由于 canvas 所需 width 800px 無(wú)法滿足,因此繪制線圖時(shí),與實(shí)際鼠標(biāo)位置發(fā)生偏離。
讀到這里,這篇“如何解決canvas繪圖位置偏離的問題”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。