канва проблемы
Кто нибудь сталкивался с изменениями размеров канвы после её объявления?
1 при изменении размеров появляется вторая пара свойств... 2 центр уходит сам по себе ........................................ |
Цитата:
<canvas id="canvas"></canvas> <script type="text/javascript"> var canvas = document.getElementById('canvas'), ctx = canvas.getContext('2d'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; ctx.beginPath(); ctx.arc(*!*canvas.width/2,canvas.height/2*/!*,50,0,Math.PI*2,true); ctx.stroke(); </script> |
Цитата:
попробуй канве явно задать размеры при её создании в теге,а затем измени и просмотри через фаербаг-будет две пары атрибутов высоты и ширины.если задать начало координат,то после измения размеров оно окажется не там где было. если до изменения размеров загрузить изображение с явно заданными размерами ,то после изменения размеров канвы оно займёт(даже если его заново загрузить задав явно теже размеры) оно займёт столько же % от площади канвы как и было до изменения её размеров. единственное что помогло удержать контроль -так это перезапись тега канвы с явно заданными размерами-это позволило загружать изображения контролируя их размеры и начало координат-но не во всех браузерах прошло. в старых вообще сбивало координаты и размеры контейнеров содержащих канву на координаты и размеры до изменения-канва хоть и была заменена на новую продолжала существовать со старыми размерами именем содержимым... |
свойства canvas.width|height - Это разрешение канваса в пикселах, а canvas.style.width|height - просто размеры.
Если canvas.style.width|height не заданы, то размеры канвы совпадают с цифрами canvas.width|height (которые если не заданы равны 300х200) <canvas style = "border: 1px solid red; width: 100px; height : 150px;" id = ":cnv" width = "10" height = "10"></canvas> <script type = "text/javascript"> var cnx = document.getElementById(":cnv").getContext("2d"); cnx.fillRect(2,2,6,6); //6x6px выглядит не квадратным так как отношение width/height не совпадает с style.width/style.height </script> Если надо например следить за кликами на канве, то свойства width и height должны совпадать с одноименными стилевыми (например по клику нужно поставить точку в этом месте), иначе проецироваться все будет не корректно |
poorking,
на счёт разрешения просвятил-не знал . спс.-это всё объясняет. но всё равно остаётся проблема.меняю я не разрешение а её размеры-видно на фаербаге что размеры изначально есть -обращаюсь через стиль и походу получаю в разрешении... |
dmitriymar,
Странно, вроде все как обычно <canvas style = "border: 1px solid red;" id = ":cnv"></canvas> <script type = "text/javascript"> var cnv = document.getElementById(":cnv"); //разрешение cnv.width = "75"; cnv.height = "25"; //размер cnv.style.width = "150px" cnv.style.height = "50px" alert("res = " + cnv.width+" x "+ cnv.height +"\nstyle = " +cnv.style.width+" x " + cnv.style.height) </script> |
poorking,
чуть не так -при создании тега канвы задай её размеры.затем измени,просмотри через фаербаг-у меня изменение изменение идёт не размеров а разрешения-хотя должны быть размеры.хотя это может быть и баг браузера |
<canvas width = "100" height = "100"></canvas> Это не размеры а разрешение ) по умолчанию они 300x200, просто тут они идут как атрибуты, но суть та же, если задан стиль с размерами, то отображаться будет размер именно такой, какой в стиле, но если он не задан, то размер будет соответствовать разрешению в пикселах, хотя стилевые свойства будут пустые. (хотя они и так будут пустые, если их только не в коде задать) Вобщем я для себя понял так что для размеров канвы, именно размеров на страничке, приоритет имеет именно стилевое свойство w/h, но если оно не задано, то на размер влияет разрешение <style type = "text/css"> canvas{ width: 40px; height: 30px; border: 1px solid red; } </style> <canvas width = "1024" height = "768"></canvas> Выглядит крохотным но на нем уместится скрин моего монитора. Может из-за этой мешанины атрибутов и свойств в браузерах какой нибудь косяк? Попробуйте в разметке не задавать их, а только в коде менять. |
Цитата:
|
monolithed,
сори, не знал о разрешении) |
Часовой пояс GMT +3, время: 17:21. |