![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.10.2015
Сообщений: 18
|
![]()
Анимацию объкта выполнить с помощью копирования из вторичной поверхности в Delphi.
Препод сказал что это можно сделать с помощью Tbitmat, но я никак не соображу как это сделать вот код помогите кто-нибудь. Код:
Последний раз редактировалось Stilet; 18.10.2015 в 07:43. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
Какая любопытная штука)
Так а что именно надо сделать-то? Какую анимацию, чего? Термин "вторичной поверхности" какой-то странный, поясните? |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Alecksandra12, я угадал? Если да, то опиши перменку типа TCanvas. Глобально. Создай ее объект в событии создания формы, и задай размеры: Код:
Код:
Код:
Идея ясна?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 05.10.2015
Сообщений: 18
|
![]()
Я поискала в инете в книгах нашла методичку и в ней вот какой описан код
Удаление старого объекта с экрана Для повышения скорости создания изображения часто используется следующая технология – объект помещается в память, а затем копируется в нужное место экрана. Этот процесс можно разбить на следующие этапы: 1. закрашивание картинкой фона первой поверхности в памяти 2. отрисовка изображения в памяти поверх фона 3. копирование изображения из памяти на экран 4. вычисление новых координат объектов 5. снова п. 1 Нам потребуются две вспомогательных поверхности – одна для быстрого закрашивания фоном (будет хранить в себе фон изображения), а в другой мы будем создавать движение нашего куба. Для представления этих поверхностей в Delphi удобно воспользоваться переменными типа TBitmap, которые хранят в себе изображения. Изменять эти изображения можно с помощью свойства TBitmap Canvas, которое имеет те же функции, что и Canvas формы. Объявим эти переменные в разделе var: Код:
проинициализировать их: Код:
выходом из программы эту память нужно освободить. Это удобно сделать в процедуре FormDestroy: Код:
Для копирования изображений между холстами воспользуемся командой Draw: Код:
Теперь мы должны рисовать не на форме, а в памяти, следовательно процедура Line измениться следующим образом: Код:
Производится аналогично копированию из blink_buf: Код:
Последний раз редактировалось Аватар; 18.10.2015 в 11:33. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 05.10.2015
Сообщений: 18
|
![]()
Так все получилось вроде. Всем спасибо за помощь!.
|
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Вот прицепилась ты к этим битмапам... Canvas - и больше ничего лишнего не надо.
Впрочем сие есть твое выбор.
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 05.10.2015
Сообщений: 18
|
![]()
Просто препод сказал нужно через битмап я и делаю. По другому я ему уже сдавала не принимает...
Кстате не подскажите вот .exe вроде все правильно сделала, но что-то где видно все таки не так потому что ничего не рисует. Вот екзешник и задание. Построить перспективную проекцию модели трехмерного изображения. (Прямоугольный параллелепипед (в основании прямоугольник и боковые ребра перпендикулярны основанию) 2) Получить перспективную проекцию трехмерного объекта. 3) Предусмотреть возможность смены ракурса. 4) Анимацию выполнить с помощью копирования из вторичной поверхности |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
Сомневаюсь что тут имелась ввиду двойная буферизация... Да и в VCL для неё достаточно свойство чекнуть.
Ну если допустим, тогда причём тут "анимация"? Мне кажется 4-й пункт как-то плохо сформулирован. |
![]() |
![]() |
![]() |
#9 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
![]() Цитата:
Только плохой постановкой задачи ВУЗы могут прокормить свой персонал посредством взяток. Се Ля Ви, елки-моталки ![]()
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#10 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Взял на себя смелость перекроить. У Вас была ошибка в нерисовании буфера на канву формы, я когда её попрвил, увидел что там тоже всяких косяков полно, вроде нечистки буфера, непонятная загрузка из файла одноцветного рисунка (если надо вернуть, то там несложно так-то), искуственное ограничение области рисования размером этого рисунка и неудобный код работы с кнопками, я его перецепил на таймер.
В общем, переделал немало, но оригинал угадать можно ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в SQL-запросе выполнить выполнить условие? | Dux | БД в Delphi | 6 | 08.01.2015 17:52 |
триангуляция 2d поверхности | GiletiAnna | Помощь студентам | 0 | 18.04.2013 06:24 |
3D поверхности | Lost_Angel | C++ Builder | 1 | 29.03.2012 01:19 |
Макрос для копирования значений из нескольких файлов в один общий с определенным условием копирования | zenner | Microsoft Office Excel | 0 | 21.03.2011 14:48 |
Закрытие вторичной USERFORM - глюк VBE | Aent | Microsoft Office Excel | 9 | 08.08.2010 00:08 |