 
			
				31.05.2012, 00:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Студент 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 1,113
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от zm_sansan
			 
		
	 | 
 
	| 
		Рисовать то рисует, лучше даже вроде, но мне кажется что всё же не так быстро как нвдо
	 | 
 
	
 
 У меня в хроме очень быстро-  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 00:07
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.05.2012 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Всего быстрее в лисе работает, можно сказать идеально. На втором месте IE9, на третьем Хром. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 00:09
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Студент 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 1,113
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от zm_sansan
			 
		
	 | 
 
	| 
		Всего быстрее в лисе работает, можно сказать идеально. На втором месте IE9, на третьем Хром.
	 | 
 
	
 
 Ну меня как в хроме устраивает-я сейчас спать ложусь-если еще баги заметите напишите плиз-а то я этой прогой хочу пользоваться-будет обоим польза 
Завтра исправлю  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 00:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 без статуса 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.05.2012 
					
					
					
						Сообщений: 8,219
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 zm_sansan, 
 В Opere отлично рисует, линия не отрывается от курсора - тестил в 9.5, 10. 11.52 (11.6 - не тестирую - Личные счёты 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 08:43
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Студент 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 1,113
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Исправил там свой вариант(который клон Вашего)-в хроме баги пропали 
Пришлось запретить выделение на странице 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 09:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.05.2012 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Код можете скинуть? я потестю 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 12:28
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Студент 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 1,113
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от zm_sansan
			 
		
	 | 
 
	| 
		Код можете скинуть? я потестю
	 | 
 
	
 
 А сверху где я писал-там исправил 
на 2 странице в 22-50
 Проблема с постоянным откликом функции на событие
потом нужно фигуры рисовать-прямоугольник -овал-прямую итд 
само по себе это не сложно(прямоугольник у меня есть могу скинуть) но если объединять с другими инструментами то фигуры нужно сначало рисовать в другом канвасе-потому что там постоянно стираем все 
а по событию mouseup переносить в основной 
так же нужна программа для запоминания всей истории и желательно кнопки undo rendo  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось vadim5june, 31.05.2012 в 21:22.
				Причина: дополнение
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 18:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.05.2012 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 да, можете скинуть, хотя как реализовать я в уме представляю 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				31.05.2012, 21:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Студент 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 1,113
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Прямоугольник 
<!DOCTYPE html><html lang="ru">
<head>
<meta charset="utf-8" />
<title>canvas</title>
<!--[if lt IE 9]><script 
src="http://html5shiv.googlecode.com/s
vn/trunk/html5.js"></script>
<![endif]-->
</head>
<body onLoad="draw_cl()" 
onselectstart='return false' 
style='height:600px;overflow:hidden;'>
<center>
<canvas id="b" height="0" width="0" 
style="border: 2px dashed 
red"></canvas>
</center>
<br>4444444444444444444<br>
<div id=d></div>
<script type="text/javascript">
var canvas = document.getElementById("b");
canvas.pr=0;
canvas.mPoint=[];
canvas.width=500; //ширина холста
canvas.height=150; //высота холста
var context = canvas.getContext("2d");
function clearCanvas()
{context.clearRect
(0,0,canvas.width,canvas.height)};
function draw_cl(){
        //получаем позицию курсора относительно холста
        function mousePageXY(e){
        var x = 0, y = 0;
        if (!e) e = window.event;
        if (e.pageX || e.pageY)
        {
                x = e.pageX;
                y = e.pageY;
        }
        else if (e.clientX || 
e.clientY)
        {
                x = e.clientX + 
               (document.documentElement.scrollLeft || document.body.scrollLeft) - 
                document.documentElement.clientLeft;
                y = e.clientY + 
               (document.documentElement.scrollTop || document.body.scrollTop) - 
                document.documentElement.clientTop;
        }
        x -= canvas.offsetLeft;
        y -= canvas.offsetTop;
        return {"x":x, "y":y};
        }
        
        canvas.addEventListener("mousemove",paint,false); //добавляем события клика 
 canvas.addEventListener("mousedown",function()
{canvas.pr=1},false); 
 document.body.addEventListener("mouseup",function(){canvas.pr=0;canvas.oldLine=0;
document.getElementById('d').innerHTML=canvas.pr;},false);
canvas.addEventListener("mouseout",function()
{canvas.oldLine=0},false);
 function paint(e){
context.strokeStyle = 'red';
context.fillStyle='green';
context.lineWidth=2;
if(!canvas.pr)return;
       var mc = mousePageXY(e);
          if(!canvas.oldLine)
{canvas.oldLine=mc;return;}else{var 
old=canvas.oldLine;context.strokeStyle='red';
clearCanvas(e);context.strokeRect(old.x,old.y,mc.x-old.x,mc.y-old.y);
}
     }
};
</script>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2012, 18:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.05.2012 
					
					
					
						Сообщений: 26
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Хотел сделать очистку холста 
но начиная рисовать по холсту, после его очистки, появляется прошлый рисунок. Как сделать чтобы он не появлялся?
 
<!DOCTYPE html><html lang="ru">
<head>
<meta charset="utf-8" />
<title>canvas</title>
<!--[if lt IE 9]><script
 
src="http://html5shiv.googlecode.com/s
 
vn/trunk/html5.js"></script>
<![endif]-->
</head>
<body onLoad="draw_cl()" style='height:300px;overflow:hidden'>
<center>
<canvas id="b" height="0" width="0" style="border: 2px dashed red;"></canvas>
</center>
<br>11111111111111
<br>
<input type="button" value="Очистить" onClick="clear_canvas()">
<script type="text/javascript">
document.onselectstart=new Function("return false"); //запрет выделения
document.ondragstart=new Function("return false"); //запрет перетаскивания
var canvas = document.getElementById("b");
canvas.lkm=0; //нажатие ЛКМ
canvas.width=500; //ширина холста
canvas.height=400; //высота холста
var context = canvas.getContext("2d");
function clear_canvas(){context.clearRect(0, 0, canvas.width, canvas.height);}
function draw_cl(){
	//получаем позицию курсора относительно холста
	function mousePageXY(e){
		var x = 0, y = 0;
		if (!e) e = window.event;
		if (e.pageX || e.pageY)
		{
			x = e.pageX;
			y = e.pageY;
		}
		else if (e.clientX || e.clientY)
		{
			x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
			y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
		}
		//относительно холста
		x -= canvas.offsetLeft;
		y -= canvas.offsetTop;
		return {"x":x, "y":y};
	}
	
	//добавляем события
	canvas.addEventListener("mousedown",function(){canvas.lkm=1},false); //нажатие ЛКМ на холсте --> canvas.lkm=1
	document.addEventListener("mouseup",function(){canvas.lkm=0;canvas.oldLine=0;},false); //Нажатая кнопка мыши отпущена --> canvas.lkm=0;canvas.oldLine=0
	canvas.addEventListener("mouseout",function(){canvas.oldLine=0},false); //выход мыши с холста --> canvas.oldLine=0
	canvas.addEventListener("mousemove",paint,false); //передвижении мыши по холсту --> вызов функции рисования
	//функция рисования
	function paint(e){
		context.strokeStyle = 'red'; //цвет линии
		context.lineWidth=2; //ширина линии
		
		if (!canvas.lkm) return; //canvas.lkm==0 --> прерываем функцию рисования
		
		var mc = mousePageXY(e); //позиция мыши
		
		if (!canvas.oldLine){ //canvas.oldLine == 0
			canvas.oldLine=mc; //запоминаем где мышь вышла с холста. чтоб не было равно нулю? может лучше оптимальней сделать, в смысле логичней... 
			return; //прерываем функцию рисования
		}
		else{ //canvas.oldLine != 0 --> рисуем
			var old=canvas.oldLine; //
			//context.beginPath();
			//рисуем контуры линию
			context.moveTo(old.x,old.y); //переместить перо в эту точку
			context.lineTo(mc.x,mc.y); //нарисовать 
			//рисуем линию
			context.stroke();
			//context.closePath();
			canvas.oldLine=mc; //точка окончания рисования
		}
	}
}
</script>
</body>
</html>
Вопрос снимаю, надо было указывать начало и конец путей  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось zm_sansan, 05.06.2012 в 19:29.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |