Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Иллюзия движения 
V
    Опции темы
Metalex
Дата 15.2.2009, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Просьба к volvo877 или к любому уверенно знающему паскаль человеку: обьясните пожалуйта действие и назначение команд GetImage, PutImage и им подобных. Столкнулся с такой проблемой: захотел освоить (а не познакомится) с иллюзией движения на паскаль, но не могу нигде найти нормального обьяснения. Обьясните, пожалуйста, вы, а если я что не пойму, то переспрошу. И несколько примеров можно. Но на одних примерах не научишся, нужна и теория. Спасибо.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Virtuals
Дата 16.2.2009, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: нет
Всего: 11



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=не нужно с собой таскать, обьект рисования графика с прокруткой.)


Это сообщение отредактировал(а) Virtuals - 16.2.2009, 06:38

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  mgr256.zip 14,85 Kb
PM MAIL ICQ   Вверх
Metalex
Дата 16.2.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Вот, во всех учебниках написано чето типа этого, мож я такой, но мне не все понятно. Попробую, конечно, разобраться, посмотрим.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Virtuals
Дата 16.2.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: нет
Всего: 11



Metalex, что непонятно? пиши конкретней!
1. сам принцип симуляции движения?
2. как сохранить изображение?
3. как вывести сохраненное изображение на экран?
PM MAIL ICQ   Вверх
Metalex
Дата 16.2.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Оу, кстати никто не знает, как прописать путь к граф. файлам на Free Pascal?


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
volvo877
Дата 16.2.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



К каким граф. файлам? Ты о чем?
PM MAIL   Вверх
Metalex
Дата 17.2.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Ну вот как на  Borland Pascal
Код
initgraph (draver, mode, '[I]C:\BP\BGI[/I]');

(к примеру так)
путь к граф. файлам указывается, так во Free Pascal какой путь указывать? У меня просто обычный паскаль отказывается работать.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
volvo877
Дата 17.2.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Metalex @  17.2.2009,  14:52 Найти цитируемый пост)
во Free Pascal какой путь указывать?
Никакой не указывай, передавай пустую строку. В режиме совместимости с TP это прекрасно работает.
PM MAIL   Вверх
Metalex
Дата 17.2.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



то есть как: вообще не писать 
Цитата(Metalex @  17.2.2009,  15:52 Найти цитируемый пост)
initgraph

? или так:
Цитата(Metalex @  17.2.2009,  15:52 Найти цитируемый пост)
initgraph (draver, mode);

??



--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
volvo877
Дата 17.2.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Код
InitGraph(driver, mode, '');
 Я ж говорю: пустую строку
PM MAIL   Вверх
Metalex
Дата 17.2.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Понял smile 
Обьясните еще, пожалуйста, как работают процедуры LineRel и MoveRel. Допустим зададим с помощью MoveTo какую-либо точку и как с помощью этих процедур рисовать дальше?

Добавлено через 9 минут и 23 секунды
С GetImage и PutImage вроде разобрался smile 
В очереди стоят GetColor, GetMem. Огромная просьба: обьяните что с ними и как, а также если не сложно напишите к каждой (и к GetImage и PutImage) типа такого:
PutPixel (x,y, цвет), то есть чтоб я уверенно знал, что и где ставить.



--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Virtuals
Дата 18.2.2009, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: нет
Всего: 11



Цитата(Metalex @  17.2.2009,  22:23 Найти цитируемый пост)
то есть как: вообще не писать Цитата(Metalex @  17.2.2009,  15:52 )initgraph? или так:Цитата(Metalex @  17.2.2009,  15:52 )initgraph (draver, mode);??

а мой пример смотрел?
там есть библиотека GR256_3u, а пользовать ее
Код

var g      :GR256_3;

begin
 ModeG256:=2; \\разрешение в 256 цветном режиме
 G.Init;
...
работаем в графическом режиме
...
и выходим
 G.Done;
end.


 smile и никаких BGI не нужно
PM MAIL ICQ   Вверх
volvo877
Дата 18.2.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Virtuals @  18.2.2009,  06:36 Найти цитируемый пост)
а мой пример смотрел?
Ну, я смотрел твой пример... К сожалению, только исходник, поскольку откомпилировать его FreePascal-ем мне не удалось (массив Port, однако, отсутствует, а Extender ставить не очень-то и хотелось), так что... Никуда не денешься от BGI...
PM MAIL   Вверх
Virtuals
Дата 18.2.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: нет
Всего: 11



volvo877, так удали эти процедуры из библиотеки, они для палитры, и в примере не использовались ;)

Код

Procedure SetRGBFull(RGB:RGBRecord);
 Procedure GetRGBFull(var RGB);


Код

{################}
 Procedure SetRGBFull(RGB:RGBRecord);
  var w1:Byte;
  begin
   for w1:=0 to $FF do begin
                        port[$3C8]:=w1;
                        port[$3C9]:=RGB[w1].R;
                        port[$3C9]:=RGB[w1].G;
                        port[$3C9]:=RGB[w1].B;
                    end;
  END;
 Procedure GetRGBFull(var RGB);

  var w1:Byte;
      RGB0:RGBRecord absolute RGB;
  begin
   for w1:=0 to $FF do begin
                        port[$3C7]:=w1;
                        RGB0[w1].r:=port[$3C9];
                        RGB0[w1].G:=port[$3C9];
                        RGB0[w1].b:=port[$3C9];
                    end;
  End;
{################}



вырезать нафиг

Это сообщение отредактировал(а) Virtuals - 18.2.2009, 14:10
PM MAIL ICQ   Вверх
Metalex
Дата 18.2.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Ой, ой, ой, что то вы написали такое - недоступное моему пониманию smile 
Все таки, может кто попытается дать ответ на мои вопросы..
Буду признателен.

Добавлено через 9 минут
В общем я мало понял из того, что вы написали..
Просто укажите, что нужно изменить к примеру в этой программе:
Код
Program Primer12; {programa dvigenia sharika so sledom po sinysoide}
 uses crt,Graph;
 CONST Pause=5000;
 Var p1, p2:pointer;                 {p1-ykazatel na obraz "sleda",}
     grm,grd,x,y,x1,y1:integer;      {p2-ykazatel na obraz sharika}
     size,c: word;
Begin
 grd:=0; InitGraph (grm,grd,''); {Inicializaciya graphicheskogo
         regima s avtomaticheskim opredeleniem podxodyashego drivera}
 c:=GetColor; {c - tset izobrageniya}
 x1:=0; y1:=90;               {x1,y1-nachalnuye koordinatu sharika}
 PutPixel (0,y1+5,c);         {Izobragenie "sleda"}
 size:=ImageSize (0,0,10,10); {size-kolichestvo baytov dlya izobrageniya}
 GetMem (p1, size);           {kvadrata 11*11}
 GetImage (0,y1,10,y1+10,p1^);{p1 ykazuvaet na oblast pamyati s izobr.sleda}
 SetFillStyle (11,c);         {tip i tsvet zakraski}
 Circle (x1+5, y1+5, 5);
 FloodFill (x1+5,y1+5,c);     {zakraska okrygnosti}
 GetMem (p2, size);
 GetImage (x1,y1,x1+10,y1+10,p2^); {p2 ykazuvaet na oblast pamyati s izobr.sharika}
 while not Keypressed do
 begin
   for x:=1 to GetMaxX do
    begin
      y:=trunc(40*sin(0.1*x)+90);  {x,y-graficheskie koordinatu
                                    novogo pologeniya sharika}
      PutImage (x1,y1,p1^,0); {na meste sharika izobragaetsya sled}
      PutImage (x,y,p2^,0);   {sharik izobragaetsya na novom meste}
      Delay (Pause);
      x1:=x; y1:=y;           {zapominayatsya novue koordinatu sharika}
    end;
 end;
 readln;
 CloseGraph;
end.

чтоб она работала на фри паскале?
Если просто запустить так выдает про какойто оптимум, а если вместо пути поставить пустую строку, возникает вторая ошибка - пишет нельзя открыть конфигфайл..

Это сообщение отредактировал(а) Metalex - 18.2.2009, 16:49


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0742 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.