Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Ошибка в координатах картинки (https://javascript.ru/forum/events/32497-oshibka-v-koordinatakh-kartinki.html)

shtopor 18.10.2012 12:28

Ошибка в координатах картинки
 
Подскажите пожалуйста, я создаю canvas, прикручиваю к нему обработчик событий и отлавливаю координаты. Я проверял при помощи разного софта координаты высчитываются правильно, но когда я добавляю картинку с такими же координатами она получается очень сильно смещенной и растягивается. Как с этим бороться?

shtopor 18.10.2012 12:38

Вот код добавления картинки:
var q = document.getElementById("id").getContext('2d');
var img =  new Image();
img.src = '/img/qwe.png';
q.drawImage(img, (event.pageX)-(define.GameArea.offsetLeft),  (event.pageY)-(define.GameArea.offsetTop));

dmitriymar 18.10.2012 13:38

Цитата:

Сообщение от shtopor
q.drawImage(img, (event.pageX)-(define.GameArea.offsetLeft), (event.pageY)-(define.GameArea.offsetTop));

поскольку всего 2 координаты изображение должно выводиться с его родным размером- растягивать ну никак не может.
Соответственно ошибка со смещением и растяжкой не здесь, если это единственный код вставляющий изображение -значит браузер глючит, если не ед. значит ошибка в алгоритме
да и вообще, изображение вставляется в канву по событию onload img иначе можно вставить ещё не загруженное изображение
var q = document.getElementById("id").getContext('2d');
var img =  new Image();
img.src = '/img/qwe.png';
img.onload=function(){
q.drawImage(img, (event.pageX)-(define.GameArea.offsetLeft),  (event.pageY)-(define.GameArea.offsetTop));
}

shtopor 18.10.2012 13:55

С браузером все в порядке, проверил в opera и chrome. У меня png изображение шириной 50, а отображается 110. Указал еще две координаты (высоту и ширину) картинка уменьшилась не ее качество стало ужасным

dmitriymar 18.10.2012 13:58

а зум у браузера случайно не включен?:)

shtopor 18.10.2012 14:02

Возможно, а как узнать включен или нет?

Your 18.10.2012 14:04

event.target.offsetLeft

event.target.left


Возможно у вас там число не приходит и складываются строки)

dmitriymar 18.10.2012 14:07

зажать ctrl и покрутить колёсико мыши , либо ctrl +\-

shtopor 18.10.2012 14:10

А это нет конечно, canvas лежит в div с фоном, который отображается как надо

shtopor 18.10.2012 14:44

Всем спасибо, разобрался))
Размеры canvas у меня были указаны тлько в стилях)


Часовой пояс GMT +3, время: 02:27.