javascript - 一个关于canvas的简单问题,最近打算学学canvas,求解答
巴扎黑
巴扎黑 2017-04-11 12:50:21
[JavaScript讨论组]
//1.首先是关于canvas通过引入本地图片绘制图像
//html

//width:500px height:500px

//图像正确显示 大小规格365*372 //js var canvas=document.getElementById('drawing'); var context=canvas.getContext('2d'); var elImage=document.getElementById("tulip"); context.drawImage(elImage,10,10); 本事就是很简单的东西,为什么canvas中什么都没有,是空白的,但是没写错呀,我把w3c上的例子拷贝下来都不行,真是见了鬼了。 2//canvas画圆问题 context.beginPath(); context.arc(100,75,50,0,2*Math.PI); context.stroke(); //这一段也是我在w3c拷贝下来的,但是为什么人家画出来的是圆形而我是是椭圆形(如下图)

巴扎黑
巴扎黑

全部回复(5)
天蓬老师

是不是你canvas设置宽高出了问题?

http://www.cnblogs.com/wangwc...

操作canvas宽高有两种方式:
1.直接设置:

<canvas id="drawing" width="500" height="500"></canvas>

2.通过js设置画布大小

var canvas = document.getElementById("drawing");
canvas.width = 500;
canvas.height = 500;

注意:直接使用css设置,canvas会被拉伸

黄舟
  1. 为什么图片没有显示,是因为你图片的网址错了,当然没有图片。

  2. 第二个例子我画出来是圆,没有问题。
    arc()函数就是画圆用的,不可能画出椭圆来……


我想到了,你的第二个问题是一定是这样的。
你大概是搞错了canvas宽高的设置方式

canvas内部含有多少个像素是直接在标签内部写好的,像这样:

<canvas id="drawing" width="250px" height="250px">

在你的代码中没有看到这里的设置,如果你没有设置,canvas将会默认是宽300px高150px。
然后,你是不是在css中设置了它的宽高啊?
样式表给canvas设定的宽高仅仅只是它的外观大小,和它内部的像素多少没有关系,如果你强行设定外观大小,并且这个外观和标签内的宽高不相等的话,那么这个标签就会扭曲起来,最后体现出来的就是你的图像变形了

在你这个例子中,肯定是css的高大于了默认的150px,导致整个图像沿着纵轴拉伸长了。

PHP中文网

首先,canvas需要设置好width,height,这个宽,高指的是画布的宽高,而通过css设置的width,height可以理解为canvas的宽高,但并不是真正意义上画布的宽高。
图片可以试试这个方法。 context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

大家讲道理

canvas所谓设置的宽高指的是画布的大小,而通过CSS,style.width设置的是渲染后的图像的大小.所以自然被拉伸了.

#drawing{
  width:300px;
  height:150px;
}

这样设置的时候就会发现图像显示正常比例了,因为渲染后没有因为设置的宽高而拉伸.

至于图片问题,我是没有问题的.你可以检查下自己路径对没对

PHP中文网

求解答,虽然我也知道应该是很简单的问题(代码应该没有写错啊,我来来回回对了好几遍!),但是就是不知道是什么问题

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

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