Подскажите,пожалуйста, алгоритм построения Кривой Безье на Delphi ...
Сообщение отредактировано: Глюк -
Прежде чем задать  вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| Глюк | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Здавствуйте, 
			
			
					
		Подскажите,пожалуйста, алгоритм построения Кривой Безье на Delphi ... Сообщение отредактировано: Глюк -  | 
	
![]() ![]()  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Алгоритм? Рекурсивное деление пополам ... Если ты имеешь в виду метод построения, то существует функция PolyBezier, которая по заданным точкам строит эту самую кривую Безье. 
			
			
					
		Сообщение отредактировано: volvo -  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Алгоритм? Рекурсивное деление пополам ... Если ты имеешь в виду метод построения, то существует функция PolyBezier, которая по заданным точкам строит эту самую кривую Безье. А как это.Просто впервые с таким сталкиваюсь...не понимаю,если честно Мне надо шоб точки задавались с помощью мыши (щелчком на области отображения). Сообщение отредактировано: Глюк -  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Смотри... На форму брось TImage и TButton, в классе формы опиши: 
			
			
					
		type и добавь 2 обработчика: procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;Теперь щелкни в 4-х местах на Image, этим ты задашь 4 точки. Только внимательно: 2 из них (первая и последняя) - задают начало/конец кривой Безье, а еще 2 - задают ее форму... После того, как 4 точки отмечены - жми кнопку... Вот тебе и кривая...  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Спасиб,но...Я сделал так,но у меня на TImage точки не ставятся,а в итоге и не рисуется кривая? 
			
			
					
		unit Unit1; Что я не правильно сделал?  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Ты вручную прописывал Image1MouseDown? Так нельзя... убери это и в Object Inspector-е 2 раза щелкни на OnMouseDown для TImage - тогда Дельфи будет знать, что такой обработчик сушествует... Сейчас Дельфи просто не знает о нем, потому как то, что прописано в Private и Public - это твое добавление, а не добавление компилятора...  
			
			
					
		Попробуй изменить, если не получится - присоединю небольшой работающий проект...  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Спасибо большое.Теперь рисует   
			
			
					
		Я хотел узнать:а можно сделать так,чтобы задавалось более 4 точек?  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#8				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Задавать ты можешь хоть 50, только вот использовать PolyBezier будет только 4 ... Если надо больше - придется отрисовывать вручную... 
			
			
					
		Сообщение отредактировано: volvo -  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#9				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Значит все надо начинать сначала...  
			
			
					
		Подскажите,пожалуйста,а как можно будет это сделать?  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#10				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Почитай вот это (теория про кривые Безье): http://ru.wikipedia.org/wiki/%D0%9A%D1%80%...%B7%D1%8C%D0%B5 
			
			
					
		А на Арбузе есть неплохая реализация на Паскале: http://forum.arbuz.uz/index.php?showtopic=...indpost&p=13139  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#11				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Ок.Спасибо. 
			
			
					
		Прога практически готова,тока надо немного подкорректировать...кое-че не то у меня...Ну,думаю,справлюсь  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#12				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Снова я за помощью.Я сделал программку,рисует правильно.Но только почему-то у меня координаты точек смещаются.Что нужно сделать,чтоб рисовалось там,где я кликаю мышкой?  
			
			
					
		
 Сообщение отредактировано: Глюк -  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#13				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Ты считаешь, что глобальные координаты курсора мыши и оконные координаты, в которых должна появиться точка - это одно и то же, а на самом деле это далеко не так... Я не просто так в четвертом посте сделал обработку события OnMouseDown... Смотри: 
			
			
					
		var и переносишь обработку нажатия из OnClick в OnMouseDown: procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;  | 
	
| Глюк | 
                        
			
			  
			
				 Сообщение
					#14				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Репутация:    0           	 | 
       
			
			 Спасибо!Я про это и не подумал... 
			
			
					
		 | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 11:59 |