javascript - canvas坐标 相关的问题
伊谢尔伦
伊谢尔伦 2017-04-10 17:54:08
[JavaScript讨论组]

看一下如下代码:

  <style>
    #can{width:300px;height:300px;border:1px solid #ccc;}
    .test{width:50px;height:50px;background-color:green;}
  </style>
  <canvas id='can'></canvas>
  <p class='test'></p> <!--一个宽高50px的正方形-->
  <script>
    function $id(id){
      return document.getElementById(id);
    }
    var can=$id('can').getContext('2d');
        can.fillRect(0,0,50,50);   //  画一个长度50的正方形
        can.fillStyle='red';
        can.fill();
  </script>
 

一个是宽高50px的p元素,一个是使用canvas绘制出来的宽高50的图形 。

结果一对比,使用canvas绘制出来的图形显然要比p元素要大!

难道说在canvas中的类似于(50,50) 的坐标的含义不是意味着:x坐标50px,y坐标50px ??

如何使用canvas精确的绘制出 长宽为50px的图形(要和p元素设置宽高50px做出来的大小一致!)?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
阿神

canvas中的坐标是依赖其自身的widthheight属性。默认值为300和150,单位为px。

上面的代码中,如果你不通过CSS指定canvas的高宽,则50px的正方形大小将和50px的p一样。
但是通过CSS指定为宽300高300后,相当在canvas自身的宽高(300*150)在纵向拉长了一倍(150->300),所以你最后看到的canvas中的50px的方形和50px的p不一样。

最简单的理解方式,canvas和图片(img)一样,都是有自身高度的(canvas:<canvas with="" height="">,img:imgElm.naturalWidth, imgElm.naturalHeight),CSS给它们指定的尺寸会在原始大小上进行变形

例子:https://jsfiddle.net/ygjack/aqm9tkp8/

怪我咯

canvasheightwidth不要在css里面指定。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号