| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Иллюзия движения |
| Автор: Metalex 15.2.2009, 20:16 |
| Просьба к volvo877 или к любому уверенно знающему паскаль человеку: обьясните пожалуйта действие и назначение команд GetImage, PutImage и им подобных. Столкнулся с такой проблемой: захотел освоить (а не познакомится) с иллюзией движения на паскаль, но не могу нигде найти нормального обьяснения. Обьясните, пожалуйста, вы, а если я что не пойму, то переспрошу. И несколько примеров можно. Но на одних примерах не научишся, нужна и теория. Спасибо. |
| Автор: Virtuals 16.2.2009, 06:36 |
| Metalex, дык а что сложного то? GetImage -копирует область изображения в переменную PutImage - копирует из переменной в область экрана по функции ( BitBlt Operators ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Use these operators for images you place on the screen with PutImage. Constant │ Value │ Meaning : ═══════════╪═══════╪══════════ NormalPut │ 0 │ MOV CopyPu │ 0 │ MOV XORPut │ 1 │ XOR OrPu │ 2 │ OR AndPut │ 3 │ AND NotPut │ 4 │ NOT ) для эмуляции движения нужно (если с применением GetImage, PutImage): 1.рисуем обьект напр муху 2.копируем с помощью GetImage прямоугольник с мухой в переменную А. 3.копируем такого-же размера участок, куда собираемся переместится в переменную Б. 4.вставляем изображение мухи с помощью PutImage _пауза 5.вставляем оригинальное изображение взамен мухи с помощью PutImage 6.переходим на п3. вот те пример для обучения, правда боюсь сложноват поначалу будет, но если разберешся то познаеш много нового //возможны ошибки, т.к. ваялось во времена очень давно, но все компилится и работает. (TP6..TP7) (обьекты, графический режим 256цветов, BGI скомпилится в exe=не нужно с собой таскать, обьект рисования графика с прокруткой.) |
| Автор: Metalex 16.2.2009, 12:19 |
| Вот, во всех учебниках написано чето типа этого, мож я такой, но мне не все понятно. Попробую, конечно, разобраться, посмотрим. |
| Автор: Virtuals 16.2.2009, 13:20 |
| Metalex, что непонятно? пиши конкретней! 1. сам принцип симуляции движения? 2. как сохранить изображение? 3. как вывести сохраненное изображение на экран? |
| Автор: Metalex 16.2.2009, 22:08 |
| Оу, кстати никто не знает, как прописать путь к граф. файлам на Free Pascal? |
| Автор: volvo877 16.2.2009, 23:40 |
| К каким граф. файлам? Ты о чем? |
| Автор: Metalex 17.2.2009, 15:52 | ||
Ну вот как на Borland Pascal
(к примеру так) путь к граф. файлам указывается, так во Free Pascal какой путь указывать? У меня просто обычный паскаль отказывается работать. |
| Автор: volvo877 17.2.2009, 19:16 |
| Никакой не указывай, передавай пустую строку. В режиме совместимости с TP это прекрасно работает. |
| Автор: Metalex 17.2.2009, 22:23 |
| то есть как: вообще не писать ? или так: ?? |
| Автор: volvo877 17.2.2009, 22:48 | ||
|
| Автор: Metalex 17.2.2009, 22:51 |
| Понял Обьясните еще, пожалуйста, как работают процедуры LineRel и MoveRel. Допустим зададим с помощью MoveTo какую-либо точку и как с помощью этих процедур рисовать дальше? Добавлено через 9 минут и 23 секунды С GetImage и PutImage вроде разобрался В очереди стоят GetColor, GetMem. Огромная просьба: обьяните что с ними и как, а также если не сложно напишите к каждой (и к GetImage и PutImage) типа такого: PutPixel (x,y, цвет), то есть чтоб я уверенно знал, что и где ставить. |
| Автор: volvo877 18.2.2009, 09:24 |
| Ну, я смотрел твой пример... К сожалению, только исходник, поскольку откомпилировать его FreePascal-ем мне не удалось (массив Port, однако, отсутствует, а Extender ставить не очень-то и хотелось), так что... Никуда не денешься от BGI... |
| Автор: Virtuals 18.2.2009, 14:08 | ||||
volvo877, так удали эти процедуры из библиотеки, они для палитры, и в примере не использовались ;)
вырезать нафиг |
| Автор: Metalex 18.2.2009, 16:47 | ||
| Ой, ой, ой, что то вы написали такое - недоступное моему пониманию Все таки, может кто попытается дать ответ на мои вопросы.. Буду признателен. Добавлено через 9 минут В общем я мало понял из того, что вы написали.. Просто укажите, что нужно изменить к примеру в этой программе:
чтоб она работала на фри паскале? Если просто запустить так выдает про какойто оптимум, а если вместо пути поставить пустую строку, возникает вторая ошибка - пишет нельзя открыть конфигфайл.. |
| Автор: volvo877 18.2.2009, 17:15 |
| Посмотри в Аттач... Что я делаю не так? Только Pause надо уменьшить, а то будешь часами ждать перемещения... А "просто так" - это как? У тебя УЖЕ передана пустая строка... Точное сообщение об ошибке - в студию. |
| Автор: Metalex 18.2.2009, 21:09 |
По заказам телезрителей: http://ipicture.ru/Gallery/Viewfull/13541544.html той красной строки не было, писало то же. |
| Автор: volvo877 18.2.2009, 22:07 |
| Options -> Compiler, в поле "Additional compiler args" убрать этот самый -Opentium3, и нажать Ok ... Это уберет ошибку. Пробуй |
| Автор: Metalex 18.2.2009, 22:32 |
| volvo877, есть! Помоги с тем, что я раньше написал, если не сложно.. |
| Автор: volvo877 20.2.2009, 12:36 | ||||||||
Ну, а с GetImage/PutImage ты говоришь и сам разобрался... |
| Автор: Metalex 22.2.2009, 23:13 |
| 1. я написал вроде 2. volvo877, ты обидил GetMem. 3. Как использовать GetColor понятно, но не совсем понятно зачем она вообще.. 4. Выходит, что разницы между LineRel и LineTo нет? 5. И не могу найти все параметры стиля заполнения команды SetFillStyle, точнее я знаю, что их 11 и знаю, что, например, 0-это заполнение цветом фона, а вот остальные 10.. |
| Автор: Soah 22.2.2009, 23:34 | ||||||
http://www.ozon.ru/context/detail/id/126770/
Добавлено через 7 минут и 54 секунды
надо указать путь к файлу EGAVGA, он находится в папке BGI рядом с BIN |
| Автор: volvo877 23.2.2009, 02:27 | ||||
Soah, а ты FreePascal вообще в глаза видел? Или читать разучился?
Разницу между абсолютным и относительным смещением понимаешь? LineRel(10, 10) проведет линию от последней точки (X, Y) в точку (X+10, Y+10), а LineTo(10, 10) - в точку (10, 10)... GetMem не относится к графике напрямую, только косвенно... Просто выделяет необходимое количество памяти в куче. Какие именно у тебя с этой процедурой проблемы? |
| Автор: Metalex 23.2.2009, 08:56 | ||
Пока никаких, интересуюсь, что это вообще за штука. ImageSize тоже наверн с этой оперы? Добавлено через 1 минуту и 44 секунды Вот имеется примерчик:
Помогите в ней разобраться.. Здесь же по ходу используется немного другой принцип рисования? |
| Автор: volvo877 23.2.2009, 09:59 |
| Самый обычный: изображение отрисовывается, потом "замирает" на какое-то время, чтоб ты успел рассмотреть его, потом рисуется то же изображение цветом фона (то есть, стирается), меняются координаты, и все заново, опять рисуем/ждем/стираем... |
| Автор: Metalex 23.2.2009, 15:50 |
| А что за штука Round? |
| Автор: Virtuals 24.2.2009, 06:25 |
| Metalex, может скачаеш какой нить нормальный паскаль или хэлповник к freePas докачаеш? |
| Автор: Metalex 24.2.2009, 08:48 |
| Virtuals, ну и где этот хелп докачать, дай ссылку. |
| Автор: volvo877 24.2.2009, 10:17 |
| Metalex, у тебя есть выбор, либо взять файл TURBO.TPH от обычного Турбо-Паскаля, и подключить его в FPC через Help -> Files -> New (ага, он прекрасно читает TPH-файлы), но тогда ты получишь справку только по тому, что есть в TP. Или идешь сюда: http://www.freepascal.org/down/docs/docs-russia.html, качаешь доки в формате HTML, распаковываешь, заходишь в IDE -> Help -> Files -> New, и добавляешь файлы rtl\index.htm и ref\ref.html... (при добавлении надо будет дождаться, пока достроится индекс) Или качаешь оттуда же PDF-файлы, и используешь их в качестве хелпа... |
| Автор: Metalex 24.2.2009, 16:29 |
| volvo877, поставил, буду разбираться. спс. Вот прикольно, Round оказалось обычным округлением.. |