 
			
				16.09.2010, 21:55
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.05.2010 
					
					
					
						Сообщений: 187
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Canvas робота с изображениями
			 
			
		
		
		
		может ли работать канвас с изображениями, ну поворачивать, можете дать пример если да, если нет то как по другому, ну надо только с помощью клиента, и если без всяких плагинов Флеша, Явы и Сильверлайт, короче я понимаю что тут почти всем впадло писать пример, дайте хоть ссылку де есть примеры или что-то похожее??   
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.09.2010, 01:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.05.2010 
					
					
					
						Сообщений: 187
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 ну вы что шутите, как это сделать без ПХП, флеша, явы, сильверлайта??? 
это мне для часов надо будет 60 картинок, только секундной стрелки?? а в сумме  180???? ну вы гоните, это же по-любому можно сделать! 
(рисовать стрелки через СВГ, Канвас, не подходит) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.09.2010, 01:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Как так можно… За целый день не смог нагуглить решение? 
На  первой странице по  3-й ссылке сразу же находим пример:
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		You can draw a rotated image with CANVAS  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
  <title>Test</title>
<style>canvas { border: 1px solid; }</style>
<script>
window.onload = function() {
c = document.getElementById("tutorial").getContext("2d");
i = new Image();
i.src = "http://javascript.ru/forum/images/ca_serenity/misc/logo.gif";
i.onload = function() {
  c.rotate(1.5);
  c.drawImage(i,0,-100, 336, 76);
} 
}
</script>
</head>
<body>
<canvas id="tutorial" width="500" height="500"></canvas>
</body>
</html>
 
 
http://developer.mozilla.org/en/docs/Canvas_tutorial
	 | 
 
	
 
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.09.2010, 01:45
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.09.2009 
					
					
					
						Сообщений: 253
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				rotate(degrees)
			 
			
		
		
		
		А погуглить не судьба?   
<html><head><title>Canvas :: Sample #1</title><script>
var
 cnv, ctx, image = new Image();
function Init() {
 cnv = document.getElementsByTagName("canvas")[0];
 ctx = cnv.getContext("2d");
 ctx.fillStyle = "#000";
 ctx.fillRect(0, 0, cnv.width, cnv.height);
 size = cnv.width > cnv.height ? cnv.width : cnv.height;
 ctx.fillStyle = "#0e6";
 x1 = 0;
 ctx.strokeStyle = 'red';
 for(i = 0; i < 320; ++ i) {
  x2 = cnv.width * 0.375 + cnv.height * Math.sin(x1 / cnv.width * 10.7) / 2;
  y2 = cnv.height * 0.45 + cnv.height * Math.cos(x1 / cnv.width * 10.7) / 2;
  ctx.moveTo(x1, cnv.height / 2);
  ctx.lineTo(x2, y2);
  x1 = (x1 + 1) % cnv.width;
 }
 ctx.stroke();
 image.src = cnv.toDataURL("image/png");
 Animate();
 ctx.translate(cnv.width / 2, cnv.height / 2);
}
function Animate() {
 ctx.rotate(1/6);
 ctx.drawImage(image, -cnv.width / 2, -cnv.height / 2);
 setTimeout("Animate()", 50);
}
</script></head>
<body onload='Init()'>
<canvas width="320" height="240">
</canvas>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.09.2010, 02:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.05.2010 
					
					
					
						Сообщений: 187
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 та ну это капец, гуглил но мне не то выбивало.. короче спс за примеры) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.09.2010, 19:15
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.05.2010 
					
					
					
						Сообщений: 187
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Блин не понимаю, как можно задать, чтобы вращалось не вокруг точки 0,0, а например 50,50, или относительно изображение, как сделать чтобы например квадратное изображение вращалось на месте?? 
я знаю что прошу готовый скрипт, с нуля, но.. может, а?)) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.09.2010, 06:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.09.2009 
					
					
					
						Сообщений: 253
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Внимательнее
			 
			
		
		
		
		
	
 
	
		
			Сообщение от Slawaq
			 
		
	 | 
 
	
		Блин не понимаю, как можно задать, чтобы вращалось не вокруг точки 0,0, а например 50,50, или относительно изображение, как сделать чтобы например квадратное изображение вращалось на месте?? 
я знаю что прошу готовый скрипт, с нуля, но.. может, а?))
	 | 
 
	
 
 С OpenGL знакомы? Вот тут почти те же принципы: Работа с матрицей. 
В  моём примере обратите внимание на translate()...    Вращение всегда происходит вокруг (0,0). Но с помощью translate(x,y) можно сместить и все координаты, и точку центра вращения...   
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.09.2010, 19:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.05.2010 
					
					
					
						Сообщений: 187
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.09.2010, 01:10
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.09.2009 
					
					
					
						Сообщений: 253
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Документации внимательно читали
			 
			
		
		
		
		
	
 
	
		
			Сообщение от Slawaq
			 
		
	 | 
 
	| 
		та ну у вас пример де рисуеться изображение, а когда я ставил свое, так оно у меня просто крутилось вокруг 2 точек, вокруг своей оси и по середине, ну короче буду ваш пример как-то переделать, хотя не знаю как пока, но ещё рас спс)
	 | 
 
	
 
 Известная ошибка всех, кто начинает работать с графикой   
У меня друг, когда учил  Logo и сделал сцену с домиком, солнцем и деревом, никак не мог понять, почему при повторном запуске сцена поворачивается и уходит за пределы экрана...   
Тем самым, правильный алгоритм будет выглядить так: - translate(to_x, to_y);
 
- rotate(angle);
 
- ваш код прорисовки вращаегося объекта(ов)...
 
- rotate(- angle);
 
- translate(- to_x, - to_y); 
  
 Но проще оконтовать вращение замечательными context.save() и context.restore()    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.09.2010, 19:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.05.2010 
					
					
					
						Сообщений: 187
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		короче оставаясь в полном не понимании графики, то ли за лени, то ли уже за тупости)) продолжил экспериментировать с вашим кодом и добился нужного мне результата, но вот другая проблема, оно мне рисует изображение, ну я как всегда застрял на тупой проблеме, они поверх рисуются, а мне надо одно, крутящиесе..) от короче  
<html><head><title>Canvas :: Sample #1</title><script>
var
 cnv, ctx, image = new Image();
function Init() {
 cnv = document.getElementById('clock');
 ctx = cnv.getContext("2d");
 image.src = 'http://upload.wikimedia.org/wikipedia/commons/8/8e/%241Sp.png';
 Animate();
 ctx.translate(cnv.width / 3 , cnv.height / 3);
}
function Animate() {
 ctx.rotate(1/6);
 ctx.drawImage(image, -cnv.width / 5 , -cnv.height / 7);
 setTimeout("Animate()", 100);
 
}
</script></head>
<body onload='Init()'>
<canvas width="320" height="240" id="clock"></canvas>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |