|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.11.2017, 16:02 | #1 |
Форумчанин
Регистрация: 22.10.2017
Сообщений: 113
|
График функции.
Здравствуйте! Помогите пожалуйста.
Нужно при помощи image1.Canvas добавить в программу вывод плавного графика функции. Но сначала выполняется табуляция функции. Не понимаю как сделать это.. у меня просто прямую линию выводит.. Код:
|
23.11.2017, 18:19 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
what?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
24.11.2017, 15:10 | #3 |
Форумчанин
Регистрация: 22.10.2017
Сообщений: 113
|
Ну и что это?
|
24.11.2017, 16:56 | #4 |
Пользователь
Регистрация: 21.03.2007
Сообщений: 12
|
Чувак, сложно даже передать насколько ты всё делаешь неправильно.
Первое, прими к сведению: даже когда делаешь быстрый проект, чтобы протестировать что-то всегда давай нормальные говорящие имена компонентам и переменным. А тем более, если ты выкладываешь свой код на форум и просишь в нём разобраться. Никто не хочет разбираться в твоих N1, N2, a1, a2... Причём именна компонентов начинай с типа этого компонента, к примеру кнопка может называтся "buttonDoSmth" / "btnDoSmth" / "bDoSmth". Хотя бы как последний вариант. Я ленивый и так деалю, хотя считаю, что лучше 3 первые буквы отвести под тип компонента будет оптимальнее всего. И переменным не стесняйся давать полные имена. К примеру не a1, a2, а MinXValue и MaxXValue и цикл у тебя получится вида: Код:
Второе: забудь про метод TCanvas.Pixels. Это самый медленный способ что-либо нарисовать. Максимум для чего его можно использовать, так это получить ну или установить цвет какого-то пикселя ЕДИНОРАЗОВО, ни в коем случае не в цикле и не у всей картинки. Самое простое для работы с изображениями, не самый быстрый, но в подавляющем большинстве случаев подойдёт, это воспользоваться методом ScanLine (Google в помощь, примеров куча). Но в твоём случае график – это ломанная линия с набором координат, которые между собой нужно соединить линиями. Самый простой способ – это поставить указатель первой точки методом MoveTo и дальше идти по следующим точкам методом LineTo. Но у TCanvas есть замечательный метод на этот случай PolyLine, в который ты передаёшь массив точек TCanvas.Polyline( const Points: array of TPoint ) и он рисует их мгновенно, так как работает напрямую через WinApi. У тебя должно получиться что-то вроде этого: Код:
Третье: использовать Application.ProcessMessages для долгих операций в том числе и рисования не стоит. Приложение не должно подвисать. Все долгие операции нужно выносить в поток. Но! Не работу непосредственно с компонентами, в том числе и рисование на них. Так как это всё равно будет выполняться в основном потоке. Если нужно что-то нарисовать на компоненте, но это требует времени – рисуешь это всё в потоке на TBitMap, а уже готовую картинку методом TCanvas.Draw рисуешь где нужно. |
24.11.2017, 17:01 | #5 |
Пользователь
Регистрация: 21.03.2007
Сообщений: 12
|
И ещё: учись сам разбираться. min@y™ дал тебе модуль, в котором реализовано рисование графика. Далеко, конечно, не самый лучший вариант, но вполне рабочий и правильно вполне читаемо написанный. Исходя из него ты вполне мог бы решить свой вопрос сам.
Последний раз редактировалось Aptyp; 24.11.2017 в 17:03. |
24.11.2017, 17:08 | #6 |
Форумчанин
Регистрация: 22.10.2017
Сообщений: 113
|
В колледже дали 2 задачи чисто набрать(перепечатать), 1 где строится график функции, другая - табулирование функции. И дали задание объеденить их. Как - не понятно, комментариев к задаче не было, препод сказала что это же элементарно, но как мы без комментариев должны понять что canvas делает..
|
24.11.2017, 17:43 | #7 |
Форумчанин
Регистрация: 22.10.2017
Сообщений: 113
|
как учат, так и делаем..
быстро все развивается, а программа обучения отстает, да и метод у препода фиговый.. чтобы понять что вы написали, нужно, наверное... книжку прочитать. |
24.11.2017, 19:14 | #8 |
Пользователь
Регистрация: 21.03.2007
Сообщений: 12
|
Ну так в чём проблема? Читай книжки, благо не такое трудное занятие. А что делает тот или иной класс и какие у него методы и свойства нужно смотреть в документации. Твой пример:
http://docwiki.embarcadero.com/Libra...Canvas_Methods Да и что не понятно из сказанного мной? |
24.11.2017, 20:53 | #9 |
Форумчанин
Регистрация: 22.10.2017
Сообщений: 113
|
|
24.11.2017, 21:29 | #10 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 24.11.2017 в 21:33. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Построить график функции y=x^2. График строится из отрезков и алгоритма Брезенхема | Robert_ | Помощь студентам | 0 | 20.02.2017 22:37 |
Затабулировать функцию. график указанной функции и график касательной к ней в точке с абсциссой | AntonKalinin01 | Помощь студентам | 0 | 26.05.2013 07:18 |
Bывести на экран монитора и напечатать таблицу значений аргумента и функции, а также график функции средствами Exel | IgorMyakota | Помощь студентам | 1 | 24.11.2012 02:46 |
Построить график функции F(x) на заданном интервале с заданным шагом и вывести значения х и функции F(x) в таблицу в графическом р | Proskurina | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 12.11.2012 21:57 |
график функции | Максикок | Помощь студентам | 2 | 02.12.2010 21:33 |