Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 09.09.2014, 06:09
Аспирант
Отправить личное сообщение для levshkatov Посмотреть профиль Найти все сообщения от levshkatov
 
Регистрация: 03.09.2014
Сообщений: 61

Сделал два канваса, для верхнего background-color: transparent. Но теперь все, что рисуется на нижнем не видно. Что не так делаю?

Upd. Задачу выполнил, изменяя zIndex обоих слоев. Но вопрос так и остается, почему при прозрачном фоне верхнего канваса не работают методы рисования на нижнем?

Последний раз редактировалось levshkatov, 09.09.2014 в 06:21.
Ответить с цитированием
  #12 (permalink)  
Старый 09.09.2014, 06:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,503

levshkatov, так не видно или не работают методы? В любом случае где код?
__________________
29375, 35
Ответить с цитированием
  #13 (permalink)  
Старый 09.09.2014, 06:50
Аспирант
Отправить личное сообщение для levshkatov Посмотреть профиль Найти все сообщения от levshkatov
 
Регистрация: 03.09.2014
Сообщений: 61

Ответил на свой вопрос. Функции были написаны только для id нижнего канваса. Вопрос с убиранием сетки появился.
Она находится на верхнем канвасе. При нажатии на кнопку 'убрать сетку' вызывается clearRect() который 'чистит' верхний канвас. Проблема в том, что при последующем накладывании сетки другого размера, происходит совмещение старой и новой. Я понимаю, что clearRect делает нужное место всего лишь прозрачным. Как еще можно очищать сетку, чтобы потом она не появлялась снова?
<html>
<head>
<style>
body {
margin: 0;
}
#draw {
position: absolute;
background-color: transparent;
z-index: 0;
}
table {
position: absolute;
right: 15%;
}
#grid {
position: absolute;
background-color: transparent;
z-index: 1;
}
</style>
<canvas id='draw' width='600' height='400' style='border:1px solid'></canvas>
<canvas id='grid' width='600' height='400' style='border:1px solid'></canvas>
<script type='text/javascript'>
window.onload = function(e){
	var canvas=document.getElementById("draw");
	var can=canvas.getContext("2d");
	var grid = document.getElementById("grid");
	var canGr = grid.getContext("2d");
	var gridOp = 180;


	function gridF(){
		gridSize(parseInt(rangevalueGridSize.value),10);
	}
	function gridClear(){
		//canGr.width = canGr.width;
		canGr.clearRect(0,0,600,400);
	}
	function gridSize(gridSizeArg){
		if(gridSizeArg == 0){}
		else{
			for (var grid1 = 0.5; grid1 < 600; grid1 = grid1 + gridSizeArg) {
				canGr.moveTo(grid1, 0);
				canGr.lineWidth = 1;
				canGr.lineTo(grid1, 400);
				gridOpacity(parseInt(rangevalueGridOpacity.value),10);
			}
			for (var grid2 = 0.5; grid2 < 400; grid2 = grid2 + gridSizeArg) {
				canGr.moveTo(0, grid2);
				canGr.lineWidth = 1;
				canGr.lineTo(600, grid2);
				gridOpacity(parseInt(rangevalueGridOpacity.value),10);
			}
		}
	}
	function gridOpacity(gridOpacityArg){
		gridOp = gridOpacityArg;
		canGr.strokeStyle = "rgb("+gridOp+","+gridOp+","+gridOp+")";
		canGr.stroke();
	}
	
	document.getElementById("gridB").onclick = gridF;
	document.getElementById("gridClear").onclick = gridClear;
}
</script>
<title>
</title>
</head>
<body>

<br>
<table border="0">
<tr>
<td><button id="gridB">Сетка</button></td>
<td>
<input type="range" min="0" max="100" value="50" step="1" onchange="rangevalueGridSize.value=value" />
<output id="rangevalueGridSize">50</output>
</td>
<td>
<input type="range" min="0" max="255" value="180" step="1" onchange="rangevalueGridOpacity.value=value" />
<output id="rangevalueGridOpacity">180</output>
</td>
<td><button id="gridClear">Убрать сетку</button></td>
</tr>
</table>
</body>
</html>



UPD. Получилось с помощью сброса ширины. grid.width = grid.width;

Последний раз редактировалось levshkatov, 09.09.2014 в 07:00.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесконечный цикл SnowyWolf Общие вопросы Javascript 3 18.05.2014 23:33
Простой, но бесконечный цикл. Как разорвать? cccp.world Events/DOM/Window 5 29.10.2013 16:35
Как обработать бесконечный цикл? Iktash Элементы интерфейса 3 16.11.2012 10:26
Бесконечный цикл Sundro Общие вопросы Javascript 8 08.08.2011 13:58
бесконечный цикл вызова torquemada jQuery 12 17.04.2010 21:58