| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Кто может помочь!! |
| Автор: masterdelphi 23.5.2006, 23:37 |
| Кто может помочь!!Надо сделать такую процедуру или функцию!У меня на форме три кнопки Button и три Image,надо чтобы при нажатии на Button1 рисование происходило в Image1,при нажатии на Button2 рисование происходило в Image2 и т.д.,на каждом image цикл рисования одинаков, важна только реакция на конкретный Button!! |
| Автор: D4rk 23.5.2006, 23:44 |
| 1) Оформи цикл рисования как отдельную процедуру. В качестве параметра будет Image1, Image2 или Image3. 2) Напиши процедуры TForm1.Button1Click TForm2.Button1Click TForm3.Button1Click В них будешь вызывать процедуру рисования... Или я чего-то не догоняю? |
| Автор: masterdelphi 23.5.2006, 23:56 |
| Проблема в том что у меня 20 фигур для прорисовки и если для них писать по три процедуры рисования (для каждого Image) то получится 60 процедур, я хочу чтобы при нажатии на Button1,Button2,button3 загружалась одна и та же процедура(для одной фигуры) прорисовки но с разным Image(1,2,3-соответственно). |
| Автор: skyboy 24.5.2006, 00:06 |
| masterdelphi,по нажатию на кнопку что должно происходить? Выставляется какой-то признак, типа "номер текущего Image"? Тогда не проще ли сделать на checkbox'ax интерфейс? И по нажатию одной кнопки ты по состоянию checkbox'ов определяешь, где рисовать... А вообще - обрисуй пояснее картину... А то я тебе могу и про FindComponent в цикле рассказать, только знать бы ещё - надо оно тебе или нет... |
| Автор: masterdelphi 24.5.2006, 00:22 |
| Поясняю: Обязательно надо с Button'ами и Image'ами. вот прога: procedure ... var... begin... и тут самое главное with Image1.canvas do begin само рисование end; end; надо чтобы вместо Image1 стояла переменная ,которой при выполнении процедуры: procedure TForm1.Button1Click(Sender: TObject);присваивалось бы значение компонента Image1 procedure TForm1.Button2Click(Sender: TObject);-Image2 procedure TForm1.Button3Click(Sender: TObject);-Image3. Где-то слышал что это делается в отдельной процедуре через вот эту вещь Sender: TObject. Обязательно надо с Button'ами и Image'ами. Добавлено @ 00:31 FindComponent это по ходу та тема что надо... |
| Автор: Sunvas 24.5.2006, 07:02 | ||
|
| Автор: skyboy 24.5.2006, 08:25 | ||
| Пущай все твои button'ы имеют один обработчик событий: OnMyButtonClick. Тогда...
|
| Автор: masterdelphi 24.5.2006, 08:26 |
| Понял, работает. Спасибо парни!! |
| Автор: masterdelphi 24.5.2006, 08:53 |
| Кто знает как сделать так чтобы при движении(нажатии, перемещении, отпускании) курсора мыши его координаты считывались не с формы а с Image!!! Поясню: procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //координаты X и Y в этой процедуре это координаты на форме а мне надо на моем Image end; надо именно в этой процедуре!!! |
| Автор: Yanis 24.5.2006, 09:00 |
| masterdelphi А тебя не смущает, что при движении над Image событие OnMouseMove у формы не срабатывает? |
| Автор: masterdelphi 24.5.2006, 09:05 |
| Я если честно этого не знал!!Т.Е. procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); действует только над формой и нет возможности сделать её относительно Image?? |
| Автор: Yanis 24.5.2006, 09:30 | ||
| Можно посчитать относительно чего угодно. Всё зависит от того в каком собитии ты будешь получать координаты. Вообще есть один способ как определить положение курсора, когда он двигается над формой... Не знаю подойдёт ли он тебе. Вот:
|
| Автор: masterdelphi 24.5.2006, 09:56 |
| Ситуация такая я должен по Image перемещать треугольник с помощью мыши. Для этого мне и нужны координаты на Image(чтобы определить попадает курсор в треугольник или нет)!!! |
| Автор: Yanis 24.5.2006, 10:08 | ||
А почему бы тогда не использовать OnMouseMove Image'а? Если ты не в курсе, то помимо функции Win API GetCursorPos существует глобальный объект Mouse с помощью которого можно узнать положение курсора на экране. Я не понимаю в чём загвоздка?
|
| Автор: masterdelphi 24.5.2006, 11:10 |
| Все догнал!!!! Слушай а не скажешь как мне поставить условие для попадания курсора на фигуру(которую сам нарисовал в Image)? |
| Автор: Yanis 24.5.2006, 13:48 | ||
Поиском пользоваться умеешь?
|
| Автор: skyboy 24.5.2006, 14:40 | ||
можно воспользоваться Windows API функцией:
|
| Автор: masterdelphi 24.5.2006, 17:41 |
| Очень важный вопрос: У меня есть n-угольник нарисованный в image, для каждого пикселя n-угольника надо расчитать интенсивность освещения и выполнить закраску по алгоритму Гуро(если кто знает).n-угольник задается матрицей nx4.Где первые три столбца это x,y,z четвертый-нормировочный. формулу для интенсивности я знаю в неё входят три переменных зависящих от координат конкретного пикселя. Вопрос: как пробежаться по всем пикселям n-угольника вычислив для каждого пикселя и задав ему свою интенсивность ну скажем в макросе RGB(0,I,0), где I интенсивность конкретного пикселя Добавлено @ 17:42 ? |
| Автор: masterdelphi 24.5.2006, 18:41 |
| Вообщем-то весь вопрос заключается в том чтобы взяв какой-то многоугольник поочерёдно вынимать из него координаты пикселей ему принадлежащих, проводить с ними математические операции, и присваивать пикселю с этими координатами определенное значение в макросе RGB(0,I,0)!!!!!!!! |
| Автор: masterdelphi 25.5.2006, 14:26 |
| Поясню: алгоритм освещения надо проходить его в определенном порядке(алгоритм Гуро-интерполяция интенсивностей): координаты освещаемого в данный момент пикселя это не координаты на самом Image т.е. я хочу сказать что у меня есть n-угольник в трёхмерном пространстве, для каждого пикселя(в смысле точки) этого многоугольника надо расчитать интенсивность используя его реальные координаты,далее это массив интенсивностей надо сохранить , выполнить операцию проецирования на Image и присвоить ранее расчитанные интенсивности уже спроецированным пикселям. |
| Автор: sergejzr 26.5.2006, 12:51 |
| Модератор: http://forum.vingrad.ru/index.php?showtopic=96391 |