Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Эффект Лупа на JavaScript (https://javascript.ru/forum/project/3668-ehffekt-lupa-na-javascript.html)

Весёлый Мишка 13.05.2009 16:25

Эффект Лупа на JavaScript
 
Помогите:help: переделать работающий скрипт прямоугольной лупы, на круглую.

<html>
<head>
<title>Увеличительное стекло</title>

<script type="text/javascript">

document.onmousemove = handlerMM;

function handlerMM(e)
{
var dx = 0;
var dy = 0;
var fact = 2;
var opp = 70;

var x = (e)?e.pageX:event.x;
var y = (e)?e.pageY:event.y;

dx = (e)?0:window.document.body.scrollLeft;
dy = (e)?0:window.document.body.scrollTop;

var x1 = (x + dx) * fact; // левая край
var y1 = (y + dy) * fact; // верхний край
var x2 = 2 * opp + (x + dx) * fact; // правый край
var y2 = 2 * opp + (y + dy) * fact; // нижний край

document.getElementById("glass").style.left = (x + dx) * (1 - fact);
document.getElementById("glass").style.top = (y + dy) * (1 - fact);
document.getElementById("glass").style.clip = "rect(" +y1 +"px," +x2 +"px," +y2 +"px,"+x1 +"px)";

}

</script>
</head>

<body>
<h5>Увеличительное стекло</h5>
<!-- Картинка-источник -->
<img id="pic" src="Forest Flowers.jpg" galleryimg = "no" width=320 style="position: absolute; top: 40px; left: 10px; border-style: none">

<!-- Лупа -->
<img id="glass" src="Forest Flowers.jpg" width=640 style="position: absolute; top: 40px; left: 10px; clip: rect(10px, 100px, 100px, 10px); border-style: none;">

<!-- для сравнения -->
<img src="Forest Flowers.jpg" width="320" height="240" style="position: absolute; top: 330px; left: 10px; border-style: none;">

</body>
</html>

Очень надо, сроки поджимают.

Gvozd 13.05.2009 16:53

модифицировать этот скрипт не представляется возможным
style.clip позволяет рисовать только прямоугольники

идей, как можно реализовать в обход - нету

ZoNT 13.05.2009 17:58

Идея проста: делай картинку с прозрачной круглой областью :)

Весёлый Мишка 13.05.2009 19:07

Ну может чем-то заменить, я весь интернет облазил, ничего не нашел. А сделать как-то надо.

Весёлый Мишка 13.05.2009 19:08

Это как картинку с прозрачной круглой областью?

Gvozd 13.05.2009 19:39

Цитата:

Сообщение от ZoNT
Идея проста: делай картинку с прозрачной круглой областью

покажи пример.
я сколько не ломал голову, не придумал, как сделать, чтобы внутри круглой области показывалась увеличенная картинку, а вокруг нее показывался рисунок с поднизу

x-yuri 13.05.2009 19:41

как я понимаю, нужно всего лишь поверх glass поместить картинку с прозрачной круглой областью

Весёлый Мишка 13.05.2009 19:43

Вложений: 1
Вот пример

Весёлый Мишка 13.05.2009 19:44

Только это прямоугольник, я это сделал, а вот круг не получается(((

Весёлый Мишка 13.05.2009 19:45

Цитата:

Сообщение от x-yuri (Сообщение 18822)
как я понимаю, нужно всего лишь поверх glass поместить картинку с прозрачной круглой областью

Ну сделать круглую лупу, чтобы под ней увеличивалось изображение.


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