css設定canvas畫布尺寸與width和height設定的區別

admin發表於2018-05-23

推薦參閱CSS與canvas屬性設定畫布尺寸一文。

可以通過兩種方式設定canvas畫布的尺寸:

(1).通過canvas標籤內部的width和height屬性。

(2).css利用width和height屬性。

兩者的區別是巨大的,下面就通過程式碼例項做一下介紹:

下面是完整圖片顯示效果:

1.jpg

分別用標籤內width和height屬性與css的width和height屬性設定尺寸:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
canvas {
  border:2px dotted #ccc;
  margin:10px;
}
#two {
  width:600px;
  height:400px;
}
</style>
<script>
window.onload = function () {
  //獲取畫布
  var oneCvs = document.getElementById("one");
  var twoCvs = document.getElementById("two");
  //獲取繪圖環境
  var oneCtx = oneCvs.getContext("2d");
  var twoCtx = twoCvs.getContext("2d");
  //設定線性漸變
  var oneLinear = oneCtx.createLinearGradient(50, 50, 500, 50);
  var twoLinear = twoCtx.createLinearGradient(50, 50, 500, 50);
  oneLinear.addColorStop(0, "#fff");
  oneLinear.addColorStop(0.5, "#f0f");
  oneLinear.addColorStop(1, "#333");
 
  twoLinear.addColorStop(0, "#fff");
  twoLinear.addColorStop(0.5, "#f0f");
  twoLinear.addColorStop(1, "#333");
  //進行填充
  oneCtx.fillStyle = oneLinear;
  twoCtx.fillStyle = twoLinear;
  //繪製矩形
  oneCtx.rect(50, 50, 500, 200);
  twoCtx.rect(50, 50, 500, 200);
 
  oneCtx.fill();
  oneCtx.stroke();
 
  twoCtx.fill();
  twoCtx.stroke();
}
</script>
</head>
<body>
<canvas id="one" width="300" height="400"></canvas>
<canvas id="two"></canvas>
</body>
</html>

標籤內width和height屬性設定畫布的尺寸,不會造成圖片的變形,對畫布尺寸的改變相當於將畫布切去一塊或者新增一塊;css的width和height屬性,是以變形方式來拉伸和壓縮畫布,會導致圖片變形。所以儘量避免使用css設定canvas尺寸。

相關文章