• <strike id="2k0e4"></strike>
    <ul id="2k0e4"><tbody id="2k0e4"></tbody></ul>
  • <th id="2k0e4"><menu id="2k0e4"></menu></th>
  • canvas繪圖時(shí)位置偏離如何解決?

    Canvas API(畫布)是在HTML5中新增的標(biāo)簽用于在網(wǎng)頁(yè)實(shí)時(shí)生成圖像,并且可以操作圖像內(nèi)容,基本上它是一個(gè)可以用JavaScript操作的位圖(bitmap)。
    Canvas 對(duì)象表示一個(gè) HTML 畫布元素 -<canvas>。它沒(méi)有自己的行為,但是定義了一個(gè) API 支持腳本化客戶端繪圖操作。

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

    canvas繪圖
    canvas繪圖

    例如

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <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>

    上例中可以正確的繪制線圖。

    如果更改為:

    1
    2
    3
    4
    5
    <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ú)法滿足,因此繪制線圖時(shí),與實(shí)際鼠標(biāo)位置發(fā)生偏離。




    請(qǐng)輸入姓名或昵稱
    如果您有任何疑問(wèn)、需要更多信息或希望與我們建立合作請(qǐng)留言
    =

    本文來(lái)自網(wǎng)絡(luò),經(jīng)授權(quán)后發(fā)布,本文觀點(diǎn)不代表Infocode藍(lán)暢信息技術(shù)立場(chǎng),轉(zhuǎn)載請(qǐng)聯(lián)系原作者。

    (0)
    Infocode藍(lán)暢Infocode藍(lán)暢
    上一篇 2020年11月21日 下午10:22
    下一篇 2020年11月27日 下午3:23

    相關(guān)文章內(nèi)容推薦

    主站蜘蛛池模板: 精品无码人妻一区二区三区18| 国产亚洲大尺度无码无码专线 | 日韩人妻无码精品系列| 最新中文字幕av无码专区| 人妻aⅴ中文字幕无码| 国产成人AV片无码免费| 少妇无码AV无码专区在线观看 | 免费无码又爽又刺激网站直播| 无码精品A∨在线观看中文| 色欲香天天综合网无码| 中文字幕人成无码免费视频| 国产AV无码专区亚洲AV漫画 | 亚洲av中文无码乱人伦在线r▽| 久久久久久亚洲Av无码精品专口| 无码人妻精品一区二区蜜桃百度| 免费无遮挡无码永久视频| 亚洲Aⅴ无码一区二区二三区软件| 人妻丝袜中文无码av影音先锋专区| 无码人妻一区二区三区精品视频| 亚洲的天堂av无码| 小13箩利洗澡无码视频网站| 亚洲av无码乱码在线观看野外 | 一本之道高清无码视频| 亚洲真人无码永久在线观看| 亚洲AV无码一区二区二三区软件| 久久精品无码专区免费| 精品久久久无码中文字幕边打电话| 青青草无码免费一二三区| 亚洲Av综合色区无码专区桃色| 国产啪亚洲国产精品无码| 国产精品免费看久久久无码 | 午夜成人无码福利免费视频| 精品久久久久久无码专区不卡| 亚洲国产精品无码专区| 亚洲精品无码MV在线观看| 亚洲国产a∨无码中文777| 国产色综合久久无码有码| 亚洲色偷拍另类无码专区| 亚洲无码在线播放| 国产成人无码AV麻豆| 亚洲aⅴ无码专区在线观看|