Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2013, 09:49
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

Нарисовать прямоугольник на картинке за мышью
Здравствуйте! Простите если такой вопрос уже поднимался - не нашла((
Есть картинка <img> на страничке, на картинке карта мира.
Нужно чтобы можно было за мышью нарисовать прямоугольную область -
отлавливаю события onmousedown и onmouseup, а также отслеживаю положение курсора мыши.
Но я не знаю какими средствами рисовать прямоугольник между этими двумя событиями...
Может библиотеки есть какие и функции? Подскажите пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2013, 09:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от Sveta
Но я не знаю какими средствами рисовать прямоугольник
В хтмл прямоугольник можно сделать простым ДИВом...
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2013, 10:11
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

дааа...вы имеете ввиду задать стиль
border
и переписовывать див при смещении мышки на каждый пиксель....как-то это геморно...див вообще наложиться на img? я думала есть способы рисования линий и прямоугольников...
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2013, 10:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от Sveta
как-то это геморно...
Добропожаловать в наш клуб.

Сообщение от Sveta
див вообще наложиться на img?
Если правильно его создать и задать свойства в ЦСС...

Сообщение от Sveta
я думала есть способы рисования линий и прямоугольников...
Если только все это на канвас...
Ответить с цитированием
  #5 (permalink)  
Старый 20.09.2013, 11:41
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

эх..наверно придется так действовать....Спасибо за идею!
Ответить с цитированием
  #6 (permalink)  
Старый 27.09.2013, 11:36
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

сделала!
Создаем три слоя - нижний картинка, средний - выделяемая прямоугольная область, верхний - отлов событий мыши.
Вот код:

<DIV id="map_image"			style="Z-INDEX: 0; POSITION: absolute; BACKGROUND-COLOR: #d0f0c0;     WIDTH: 720px; HEIGHT: 360px;   TOP: 1px;	CURSOR: crosshair;  layer-background-color: #7bc41e" ><IMG  src="myimg.jpg"/></DIV>
	<DIV id="selected_area"	style="Z-INDEX: 1; POSITION: absolute; WIDTH: 0px; HEIGHT: 0px;  TOP: 1px; 	LEFT: 0px;	BACKGROUND-COLOR: transparent; 	CURSOR: crosshair;  layer-background-color: transparent; border:  2px solid #ffccff;" ></DIV>
	<DIV id='mouse_events' name="mapimage"  onmouseup="processMouseUp(event)" onmousedown="clickCheck( event)" onmousemove="processMouseMove(event)" style="Z-INDEX: 2; POSITION: absolute; BACKGROUND-COLOR: transparent; WIDTH: 720px; HEIGHT: 360px;  TOP: 1px; CURSOR: crosshair;  layer-background-color: transparent" ></DIV>

function processMouseMove (evt) { 
		if(flag_select_area==1){//если пользователь нажал но еще не отпустил кнопку мыши
			var pixelX=ret_X(evt); 
			var pixelY=ret_Y(evt);	
			var div = document.getElementById("selected_area");
			if(pixelY >= startY_rect){	
				div.style.height = pixelY - startY_rect +"px";
				div.style.top = startY_rect+"px";
			} else {
				div.style.top = pixelY +"px";
				div.style.height = startY_rect - pixelY +"px";
			}	
			if(pixelX >= startX_rect){
				div.style.width = pixelX - startX_rect +"px";		
				div.style.left = startX_rect+"px";	
			} else {
				div.style.left = pixelX +"px";		
				div.style.width = startX_rect - pixelX +"px";	
			}
		}
		return;
	}
	
	
	//кнопка мыши нажата===========================================
	function clickCheck (evt) { 
	startX_rect=ret_X(evt);
	startY_rect=ret_Y(evt);
	if(evt.button == 3 || evt.button == 2 ) // right click
		   {return false ;}
	flag_select_area=1;	
	return true;
	}
		//кнопка мыши отпущена=============================================
	function processMouseUp (evt) {
		flag_select_area=0;
		if(evt.button == 3 || evt.button == 2 ) // right click
			   {return false ;}
		return true;
	}
function ret_X(evt){ //координаты курсора
	var pixelX;
		if (document.all){ //IE
			pixelX = evt.offsetX-sdvig_left;
		}
		else if (document.getElementById) { //for FF and Opera
			pixelX = evt.pageX-sdvig_left; 	
		}	
		
		return pixelX;
	}
	
	function ret_Y(evt){
		var pixelY;
		if (document.all){ //IE
				  pixelY = evt.offsetY;
		}
		else if (document.getElementById) { //for FF and Opera
				pixelY = evt.pageY;	
		}		
		
		return pixelY;
	}

Последний раз редактировалось Sveta, 27.09.2013 в 11:39.
Ответить с цитированием
  #7 (permalink)  
Старый 27.09.2013, 11:41
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

А еще есть библиотека готовая, но я не поняла как при ее использовании отлавливать события мыши, а так красиво работает, посмотрите если интересно:
http://marqueetool.net/examples/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как нарисовать график на javascript? Бобр Общие вопросы Javascript 21 30.03.2014 17:27
Как нарисовать Солнце средствами HTML 5 Canvas? Antohsa Элементы интерфейса 2 18.09.2013 01:19
canvas - нарисовать линии Valentinka_1 Общие вопросы Javascript 1 09.05.2013 21:51
Как запретить отмену выделения текста от клика мышью? Маэстро Internet Explorer 0 03.04.2012 21:21
HTML5 Как сделать, чтобы можно было двигать картинку мышью? Бобр Общие вопросы Javascript 2 18.06.2010 21:22