Как вариант использования библиотеки, вот ванильная реализация Javascript.
В основном нам нужно прослушивать только два события, mousemove
и mouseout
, оба в элементе холста. Мы просто рисуем изображение половинного размера на холсте в начале и в mouseout
. Мы рисуем изображение «увеличенное» (полный размер), когда мышь находится в месте, отрицательном по отношению к положению мыши:
Как показано по ссылке выше -
Получить и нарисовать изображение:
var img = document.createElement('img');
img.onload = function() {
//init geometry
canvas.width = img.width>>1; //we'll show image at half size
canvas.height = img.height>>1;
//drawimage
doCanvas();
//add event listener we need
canvas.addEventListener('mouseout', doCanvas, false);
canvas.addEventListener('mousemove', move, false);
}
//some image...
img.src ="http://i.imgur.com/pULaM45.jpg";
function doCanvas() {
ctx.drawImage(img, 0, 0, img.width>>1, img.height>>1);
}
На mousemove
перемещайтесь:
function move(e) {
var pos = getMousePos(canvas, e);
ctx.drawImage(img, -pos.x, -pos.y, img.width, img.height);
}
mouseout
мы просто сбрасываем, вызывая doCanvas()
.
Это работает без какого-либо сложного масштабирования, поскольку изображение отображается с масштабом 50%, поэтому, когда положение мыши находится в правом нижнем углу, который соответствует другой половине (четверти) изображения.
Если вы хотите, скажем, сначала показать изображение на 25% от полного размера, вам нужно масштабировать координаты мыши с помощью коэффициента масштабирования.
Демонстрация с использованием других коэффициентов масштабирования, кроме 50%.
person
Community
schedule
17.06.2013