1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScript Canvasのサイズについて

Last updated at Posted at 2022-02-24

HTMLコード

<body>
  <canvas id="can"></canvas>
  <script src="example.js"></script>
</body>

上記コードのように、HTMLで「canvas要素」をID名「can」で記述し、
それをJavascript(ファイル名「example.js」)でいじっていきたいときの
サイズに関してのお話です。

まず「canvas」には「キャンバスサイズ」と「表示サイズ」があり、
「キャンバスサイズ」はHTMLで定義したcanvas要素をJavaScriptでいじっていく時の
基本となるサイズになります。
「表示サイズ」は、「キャンバスサイズ」で決定したサイズや形などを基準にどれだけの倍率でブラウザに表示するかというサイズになります。

JSコード

let can=document.getElementById("can");
let con=can.getContext("2d");

can.style.border="5px solid #000";

function square(){
  con.fillStyle="red";
  con.fillRect(140,65,20,20);
}
square();

上記コードのように、
まず「getElementById」でHTMLの「canvas要素」を取得、
「getContext」で2Dの描画を作成していくとし、
キャンバスサイズ(初期値)に枠線を描画、
塗りつぶし(fill)の「色」と「座標、サイズ」を指定した「square関数」を定義、
その「square関数」を呼び出し、
スクリーンショット 2022-02-24 15.58.55.png
上記画像をブラウザに表示させました。

まず最初に知っておかないといけないのは
キャンバスサイズは何も設定していなければ
初期値である「width:300px,height:150px」に自動で設定されます。
なので画像のような横長長方形になっているんですね。

キャンバスサイズは初期値の300×150ですが、
表示サイズもまだ何も設定されていないため、
キャンバスサイズに準じている状態です。

その初期値の縦横の長さを踏まえた上で、「square関数」で指定した塗りつぶし四角を
丁度真ん中に持ってくるように指定しています。

それではこの長方形のキャンバスサイズ正方形にするために、
まずキャンバスサイズを変更していきます。

HTMLコード

<body>
  <canvas id="can" width="300px" height="300px"></canvas>
  <script src="example.js"></script>
</body>

HTMLのcanvas要素に上記コードのように「width」と「height」を追加して指定すると
スクリーンショット 2022-02-24 16.18.25.png
初期値であった長方形が、
画像のような正方形のキャンバスサイズに変更されました。

次に「表示サイズ」を見ていきます。
表示サイズは今まで設定してきた「キャンバス」自体をブラウザにどのように表示させるかというもので、
普通はCSSを使って記述していくのですが、
今回はJSにCSSを記述していくやり方です。

JSコード

can.style.width="300px";
can.style.height="300px";

先程のJSの記述に上記コードを追加しました。
JSにサイズのCSSを記述するときは、
取得ID名(今回だと「can」).style.「width or height」="サイズ";
という感じで記述します。

このコードだと、先程設定した「キャンバスサイズ」も300×300なので、
表示サイズもキャンバスサイズと一緒になり、先程の正方形になります。

JSコード

can.style.width="600px";
can.style.height="300px";

次に表示サイズのwidthを600pxにしてみます。
スクリーンショット 2022-02-24 16.32.49.png
すると、黒の外枠は横長の長方形になりましたが、中の赤正方形も横に引き伸ばされました。
これは元の「キャンバスサイズ」は変わらず300×300の正方形なのに対し、
「表示サイズ」を横長にすることによって
キャンバス自体はそのままに、表示サイズで設定した横幅600pxまで引き伸ばした結果になるためです。

HTMLで「canvas要素」を設定して、
「キャンバスサイズ」を設定せず(この時点で縦150px、横300pxの初期値)、
CSSで表示サイズを300×300の正方形に設定したとしても、
スクリーンショット 2022-02-24 16.43.05.png
上記画像のようにブラウザに表示されるのは
横長のキャンバスが縦に引き伸ばされた正方形ができてしまうということですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?