6 ответов:
возможно, стоит посмотреть учебник: Firefox Холст Учебник
вы можете получить ширину и высоту элемента canvas просто путем доступа к этим свойствам элемента. Например:
var canvas = document.getElementById('mycanvas'); var width = canvas.width; var height = canvas.height;контекст-это объект вы получаете от холста, чтобы позволить вам сделать это.
Ну, все ответы до этого не совсем корректны. 2 из основных браузеров не поддерживают эти 2 свойства (IE является одним из них) или используют их по-разному.
лучшее решение (поддерживается большинством браузеров, но я не проверял Safari):
var canvas = document.getElementById('mycanvas'); var width = canvas.scrollWidth; var height = canvas.scrollHeight;по крайней мере, я получаю правильные значения с шириной прокрутки и высотой и должен установить холст.ширина и высота при изменении размера.
объект контекста позволяет вам манипулировать холстом; вы можете рисовать прямоугольники, например, и многое другое.
Если вы хотите получить ширину и высоту, вы можете просто использовать стандартные атрибуты HTML
widthиheight:var canvas = document.getElementById( 'yourCanvasID' ); var ctx = canvas.getContext( '2d' ); alert( canvas.width ); alert( canvas.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">
теперь начиная с 2015 года все (майор?) браузеры, кажется, обсыпать
c.widthиc.heightчтобы получить полотно внутренние размер, но:вопрос, поскольку ответы являются missleading, потому что холст имеет в принципе 2 разных/независимых размера.
"html" позволяет сказать CSS width / height и его собственный (атрибут-) width / height
смотреть на это короткий пример различных размеров, где я положил 200/200 холст в 300/100 html-элемент
в большинстве примеров (все, что я видел) нет набора css-size, поэтому они получают implizit ширину и высоту (чертежного) размера холста. Но это не обязательно, и может привести к забавным результатам, если вы берете неправильный размер - т. е. css widht / height для внутреннего позиционирования.
У меня была проблема, потому что мой холст был внутри контейнера без ID, так что я использовал этот код jQuery ниже
$('.cropArea canvas').width()
Comments