Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28

Анимация Canvas,Timage

02.06.2019, 17:54. Показов 4574. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возникла проблема при выполнении задания, вообщем-то необходимо построить модель атома. Суть проблемы состоит в анимации электронов, находящихся на различных уровнях.Прорисовать сами уровни с помощь TCanvas я смог, но вот встала проблема с движением электронов.Каким образом реализовать их движение? уже 2 сутки мучаюсь над буферами изображений для отрисовки, подключения библиотек для png,которые никак не хотят создавать динамически Timage. Просто сделать большое количество компонентов Timage и, вследствие, получая данные из файла, отправляя их в класс и запуская методы, которые будут включать видимость этих самых компонент для меня видится самым простым, но глупым решением.
Пожалуйста объясните каким образом лучше реализовать анимацию!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2019, 17:54
Ответы с готовыми решениями:

Анимация движения изображения квадрата по графику на Canvas
Нужна помощь...в создании как бы анимации с помощью Сanvas, которая будет идти по траектории графика заданой формулой.. Вот у меня есть...

TImage
Вообщем написал я программу которая при нажатии стрелки влево картинка начинает двигаться влево, только есть одна проблема картина делает...

Рисование на TImage
У меня есть картинка TImage и у нее загружается *.png файл. Нужно на этой картинке нарисовать красный прямоугольник, что я и делаю: ...

26
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
09.06.2019, 22:10
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от StalinGuf Посмотреть сообщение
Осталось организовать поиск по файлу, где будут храниться данные об элементе, используя его номер в таблице или же название, каким образом это осуществить будет удобнее?
Любой способ будет правильным. зависит что должно хранится в файле?
что должно произойти после загрузки файла? стартовать с координатами на которых была остановлена программа?
для этих нужд можно использовать ini файл конфигурации.
там будет легче прочитать настройки элемента.
если же нужна история - тогда можно файл , с возможностью выбора определенной точки.
думаю этот вариант для этой программки, лишний.
все в ваших руках.
надо определиться какую информацию сохранять. а там и решение само придёт.
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
10.06.2019, 00:26  [ТС]
Храниться в файле должен номер элемента в таблице Менделеева, название этого элемента, ну, я полагаю, количество уровней или же хотя бы количество электронов, чтобы я мог осуществить поиск или номеру в периодической таблице или по названию, тем самым выведя его модель
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
10.06.2019, 07:33
StalinGuf, тогда легче хранить в таблице(StringGrid). будет очень просто потом найти элемент или по номеру или по названию и всем другим параметрам. можно редактировать.
таблицу сохранять в файл.
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
10.06.2019, 16:32  [ТС]
Т.е. мне лучше сначала заполнить таблицу при создании формы, присвоив ячейкам данные о элементах, а после сохранить их в файл, сразу же после этого, затем делать поиск по записанным данным в файле?

Добавлено через 49 секунд
Просто специфика задания в том, чтобы был файл в котором будут содержаться данные и необходимо осуществить поиск
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
10.06.2019, 16:54
Цитата Сообщение от vladi4ka Посмотреть сообщение
необходима анимация идущего человечка в с++ builder, как раз именно таким способом с выводом разных позиций человечка поочередно. Не могли бы, пожалуйста, объяснить как это делается
Рисуется в паинте большая картинка со всеми возможными слайдами, отражающими одно движение человечка. То есть слева направа на однородном фоне рисуются, например, четыре изображения человечка одинакового размера: обе ноги стоят, одна нога поднялась, верхняя нога передвинулась, верхняя нога опустилась.
Это изображение с четырьмя стадиями движения загружается один раз в битмап.
Для анимации реализуется цикл по количеству стадий движения (в нашем случае четыре итерации). На каждой итерации цикла из битмапа вырезается кусок по ширине равный одной четвертой (потому что четыре картинки) и со смещением равным одной четвертой умноженной на номер итерации.
Каждая вырезанная картинка отрисовывается в одном и том же месте на экране, перекрывая предыдущую.

Добавлено через 1 минуту
Ну или как правильно подсказывает Avazart, использовать специальный компонент TAnimate.
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
18.06.2019, 23:51  [ТС]
Здравствуйте, я сейчас подробно начал рассматривать программу, что построил по вашему прототипу и не очень понял, зачем нам d_aplha, d_alpha_, alpha_, пожалуйста, не могли бы вы объяснить, я не очень понимаю, как у нас происходит прирощение, если они даже не проинициализированы?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
19.06.2019, 11:50
Цитата Сообщение от StalinGuf Посмотреть сообщение
зачем нам d_aplha, d_alpha_, alpha_, пожалуйста, не могли бы вы объяснить, я не очень понимаю, как у нас происходит прирощение, если они даже не проинициализированы?
Обратите внимание на символ нижнего подчеркивания в конце названия каждой переменной:
d_aplha (вот тут вот нету), d_alpha_, alpha_
Есть переменные, у которых есть в конце символ подчеркивания, а есть у которых нет.
Те переменные, у которых нет - это обычные переменные. Обычные переменные, участвующие в расчетах.
Эти обычные переменные инициализируются как раз значениями переменных, у которых есть в конце символ подчеркивания.
Остается разобраться как получают значения переменные с символом подчеркивания.
Обратите внимание, если обычные переменные у нас объявлены как члены класса, то переменных с нижним подчеркиванием на конце там нет:
C++
6
7
8
9
10
11
12
class Electron
{
private:
  Graphics::TBitmap *bitmap;
  int x,y,h,v,z,l,m,j;
  int a,b,cntrx,cntry;
  double alpha, d_alpha;
Они есть зато в определении метода Init:
C++
20
void Init(int a_, int b_, double alpha_, double d_alpha_);
Переменные, находящиеся в скобочках в определении метода, называются параметрами метода.
Эти параметры метода заполняются реальными значениями при вызове этого метода. И чтобы в коде понять как использовать какой параметр, их - эти параметры - именуют.
Обратите внимание опять на код:
C++
14
15
16
17
18
19
20
21
22
23
24
void Electron::Init(int a_, int b_, double alpha_, double d_alpha_)
{
  x = h =  bitmap->Width/2;
  y = v = bitmap->Height/3;
  a = a_;
  b = b_;
  alpha = alpha_;
  d_alpha = d_alpha_;
  cntrx = bitmap->Width/2;
  cntry = bitmap->Height/2;
}
А конкретнее на строку 21:
C++
21
  d_alpha = d_alpha_
Переменной d_alpha присваивается значение параметра d_alpha_.
Параметр d_alpha_ мог бы называться и PupkinVasia, тогда бы код имел вид:
C++
d_alpha = PupkinVasia;
Но так, как мне показалось, будет не очень понятно какой параметр устанавливает значение какой переменной. Поэтому я в своем примере назвал соответствующие параметры функций именами переменных, которые они устанавливают. И чтобы избежать конфликта имен, добавил к концу каждого параметра символ нижнего подчеркивания.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2019, 11:50
Помогаю со студенческими работами здесь

Работа с TImage
Ребят,есть вот такие,например, строчки: Image1_1->Picture->LoadFromFile("..\\..\\models\\dot\\dot.bmp"); ...

Рисунок в Timage
Здравствуйте. Суть в том, что создаются динамически Timage, сколько задает пользователь. При нажатии image должен заполнятся картинкой в...

TImage и AutoSize
Загружаю картинку в Image2 таким способом c заранее заданными координатами void __fastcall TEdit_Form::Button3Click(TObject...

Кнопка из TImage
Сделал кнопку из TImage. При нажатии картинка меняется. Но назад при отпускании не могу вернуть. 2 дня мучаюсь. Подскажите кто знает.

TImage в C++ Builder
Начинаю работу с изображениями в C++ Builder. Требуется сделать поворот, масштабирование и т.д. Не подскажете литературу попроще по работе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru