canvas设置width, height

在style里面设置canvas的宽高时,会发现画出的图像被拉伸了;在canvas元素中直接设置width和height就会恢复正常;如果在canvas元素里的style里设置width和height会发现又不行了!看了chy龙神 的博客发现了其中玄机。。

首先这是由canvas的构造导致的,canvas是一个画板和一张画纸组成的。当画板和画纸尺寸一致时,不会发生拉伸变形的情况;当画板和画纸尺寸不一致时,就会被拉伸变形。

能正确设置画板和画纸宽高一致的方法,这些方法可以同时设置画板和画纸的宽高:

方法一:直接在canvas标签中设置宽高

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

方法二:使用canvas的API操作

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

不正确设置,即这样设置完会导致拉伸现象出现:

方法一:在style里面设置

#canvasId{
    width:500px;
    height:500px;
}

方法二:使用canvas的API操作style

var canvas = document.getElementById("canvasId");
canvas.style.width = "500px";
canvas.style.height = "500px";

方法三:

$(“#id”).width(500);

这样设置的宽高仅为画板的宽高,而画板和画纸默认的宽高为300*150。

画的图像是根据画板大小填充的,如果设置了画板的宽高为300*300,则会发生这样的事情:

但是画纸也不会留出这么一半空白,所以画纸就会被拉伸到跟画板一样的大小,就会被变形拉伸了!

注:canvas的width和height也不能用百分比表示,canvas会把百分比当数值。

时间: 2024-07-30 13:44:45

canvas设置width, height的相关文章

Canvas设置width与height 的问题!

最近因为工作需要,所以就学了一下Html中的Canvas标签. 当我看了一下教程后,自己写了一个hello world的时候,麻烦事就出现了.看下面代码: <!DOCTYPE html> <html lang="en"> <body> <canvas id="canvas1" style="width: 200px;height: 200px; border:1px solid black;"> &

Canvas的width,height 和 样式中Canvas的width,height

控制Canvas的大小,有两种方式: 1:直接设置Canvas标签上的书width,height属性值; 2:通过Css设置Canvas的width,height; 这两种方式,区别是很大的. 1:Canvas默认的画布宽高是300 * 150,当你设置标签的width,height属性值时,控制的是Canvas的元素本身的宽高,和Canvas画布的宽高大小.同时设置定了两个值. 2:而Css设置width,height时,只仅仅控制了Canvas元素自身的宽高,而不会改变Canvas画布大小.

H5 canvas的 width、height 与style中宽高的区别

Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width="300" height="300">浏览器不支持Canvas,请升级或改用其它浏览器!</canvas> <script type="text/javascript"> var canvas = document.getE

canvas.width和canvas.style.width的区别

先让我们来看下代码: <!DOCTYPE HTML><html><body> <canvas id="myCanvas" style="border:1px solid #c3c3c3;">Your browser does not support the canvas element.</canvas> <script type="text/javascript"> var

&lt;canvas&gt;设置宽高遇到的问题

在使用<canvas>元素时必须设置宽度和高度,指定可以绘画的区域大小.但是这里设置宽度和高度的时候有一个小问题. 样例代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>canvas绘图</title> </head> <body> <canvas id="drawimg"

Canvas标签width属性和css的width属性

本篇只是一个渣渣写的笔记,要说的都在代码中的注释中,在我看来不求甚解的话没准根本不知道两者的区别更好 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Canvas标签width属性和css的width属性</title> <style type="text/css"> .mycanvas { border:

canvas设置线条样式

canvas设置线条样式 合法属性和方法 lineWidth = value 设置线宽 lineCap = type 设置线端点样式 lineJoin = type 设置线交合处样式 setLineDash(segments) 设置虚线 lineDashOffset = value 设置虚线偏移 设置线宽 const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); ctx.lineW

[扩展]为UIView扩展x,y,width,height,centerX,centerY,Size,Origin等属性

大家应该知道如何设置一个view组件的位置把,是的,如下: view.frame=CGRectMake(x,y,width,height);//设置组件的x,y坐标,设置组件的宽度高度... 如果我单独要设置坐标或者宽度高度,得这样: view.frame.size.width=100; view.frame.size.height=100; 如果你想偷个懒,比如: view.frame.size=(CGSize){200,200};//这个语句会报错,因为无法对size赋值 通过上面的代码,大

as3:sprite作为容器使用时,最好不要指定width,height

除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的高度为 0,即使您尝试将 height 设置为其它值,也是这样. 如果您设置了 height 属性,则 scaleY 属性会相应调整(width类推) 原作者:菩提树下的杨过出处:http://yjmyzz.cnblogs.com 也就是说,一个空的sprite,既使您设置了width,height也是没用的(而且人为设置了反而会有负作用,见下面的代码) 1 var _sprite:Sprite =