Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Проблема с часами
     
    
Добавлено: 29.05.07 22:15
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Loki
 Loki
      
       
  
Помогите, пожалуйста.
 
    
Есть программа "Часы". Программа показывает системное время в виде механических часов. Примеры есть на сайте. Так вот, нужно сделать так, чтобы можно было курсором мыши перетаскивать часовые, минутные и секундные стрелки. Стрелки прорисовываются на форме либо как линии, либо как массив рядом стоящих рисунков (кругов). Линиям задается функция, с помощью которой стрелки двигаются.
Как сделать так, чтобы эти стрелки можно было передвигать по кругу с помощью курсора? Грубо говоря, поменять на часах время так, как мы меняем его на обычных механических часах, но с помощью мыши.
Буду признателен, если кто-нибудь поможет.
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 7
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Sharp
 Sharp










Лидер форума
ICQ: 216865379 
Вопросов: 106
Ответов: 9979
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  30.05.07 01:47
       
    
       
  
Обрабатываешь клик мыши на поле часов.
 
    
Смотришь, конец какой стрелки ближе всего к этой точке.
Запоминаешь эту стрелку.
При перемещениях мыши с зажатой кнопкой считаешь угол, на который должна быть повернута стрелка, чтобы она указывала на эту точку.
Перемещаешь стрелку.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: mc-black
 mc-black


ICQ: 308-534-060 
Вопросов: 20
Ответов: 1860
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  30.05.07 08:45
       
    
       
  
Плюс пересчитываешь время. А ещё надо определять по часовой или против часовой поворачиваем стрелку, а то как знать, куда собирались перевести время.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: ZagZag
 ZagZag


ICQ: 295002202 
Вопросов: 87
Ответов: 1684
      
 Профиль |  | #3
       
Добавлено:  30.05.07 10:53
       
    
       
  
Впросто надо знать углы поворота всех стрелок.
 
    
При MouseDown найти стрелку с углом равным углу вектора от центра циферблата к курсору и запомнить эту стрелку (lngSetrelka = номер_стрелки)
При MouseMove + Button=1 вычислить угол вектора от центра циферблата к курсору и установить этот угол запомненной ранее стрелке
Надо будет еще написать функцию перевода угла поворота стрелки в часовую (непомню как точно называется) систему, т.е. по углу вычислить часы, минуты или секунды
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: mc-black
 mc-black


ICQ: 308-534-060 
Вопросов: 20
Ответов: 1860
      
 Web-сайт:  
 Профиль |  | #4
      
Добавлено:  30.05.07 11:50
       
    
       
  
Короче задача разбивается на множество подзадач. Сам по себе вопрос интересный. Много чего можно придумать.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: ZagZag
 ZagZag


ICQ: 295002202 
Вопросов: 87
Ответов: 1684
      
 Профиль |  | #5
       
Добавлено:  30.05.07 11:56
       
    
       
  
 
    
Так проще. Всегда так делаю
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: Loki
 Loki

Вопросов: 1
Ответов: 1
      
 Профиль |  | #6
       
Добавлено:  31.05.07 17:08
       
    
       
  
Спасибо. Ох, осталолось все это как код написать...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа: AgentFire
 AgentFire



ICQ: 192496851 
Вопросов: 75
Ответов: 3178
      
 Профиль |  | #7
       
Добавлено:  01.06.07 22:37
       
    
       
  
О, это уже дело техники, элементарно..