JavaScriptでキャンバス要素の幅と高さを取得するにはどうすればよいですか?
また、私が読み続けているキャンバスの「コンテキスト」とは何ですか?
チュートリアルを見る価値があるかもしれません: Firefox Canvas Tutorial
要素のプロパティにアクセスするだけで、キャンバス要素の幅と高さを取得できます。例えば:
var canvas = document.getElementById('mycanvas');
var width = canvas.width;
var height = canvas.height;
コンテキストは、キャンバスから描画できるようにするためにキャンバスから取得するオブジェクトです。
さて、以前のすべての答えは完全に正しいわけではありません。主要なブラウザのうち2つは、これらの2つのプロパティをサポートしていません(IEはその1つです)。
より良いソリューション(ほとんどのブラウザーでサポートされていますが、Safariをチェックしませんでした):
var canvas = document.getElementById('mycanvas');
var width = canvas.scrollWidth;
var height = canvas.scrollHeight;
少なくともscrollWidthと-Heightで正しい値を取得し、リサイズ時にcanvas.widthとheightを設定する必要があります。
canvas.width
に言及する回答は、キャンバスの内部寸法、つまり要素の作成時に指定された寸法を返します。
<canvas width="500" height="200">
CSSを使用してキャンバスのサイズを設定すると、そのDOMディメンションには.scrollWidth
および.scrollHeight
からアクセスできます。
var canvasElem = document.querySelector('canvas');
document.querySelector('#dom-dims').innerHTML = 'Canvas DOM element width x height: ' +
canvasElem.scrollWidth +
' x ' +
canvasElem.scrollHeight
var canvasContext = canvasElem.getContext('2d');
document.querySelector('#internal-dims').innerHTML = 'Canvas internal width x height: ' +
canvasContext.canvas.width +
' x ' +
canvasContext.canvas.height;
canvasContext.fillStyle = "#00A";
canvasContext.fillText("Distorted", 0, 10);
<p id="dom-dims"></p>
<p id="internal-dims"></p>
<canvas style="width: 100%; height: 123px; border: 1px dashed black">
コンテキストオブジェクトを使用すると、キャンバスを操作できます。たとえば、四角形を描くことができます。
幅と高さを取得する場合は、標準のHTML属性width
およびheight
を使用できます。
var canvas = document.getElementById( 'yourCanvasID' );
var ctx = canvas.getContext( '2d' );
alert( canvas.width );
alert( canvas.height );
2015年以降、すべての(メジャー?)ブラウザーはc.width
およびc.height
を低くして、キャンバスinternalサイズを取得しているようですが、
キャンバスには原則として2つの異なる/独立したサイズがあるため、答えとしての質問は誤解を招く可能性があります。
「html」は、CSSの幅/高さと、独自の(属性)の幅/高さを言います。
これを見てください 異なるサイズの短い例 、ここでは200/200のキャンバスを300/100のHTML要素に入れます
ほとんどの例(私が見たすべて)にはcssサイズが設定されていないため、これらは(描画)キャンバスサイズの幅と高さを暗示します。しかし、これは必須ではありません。間違ったサイズを選択すると、面白い結果が得られます。内部配置のためのCSS幅/高さ。
それらのどれも私のために働いた。これを試して。
console.log($(canvasjQueryElement)[0].width)