![]() |
![]() ![]() |
![]() |
Masacre Ant |
![]()
Сообщение
#1
|
Гость ![]() |
Каким образом можно в программу на Паскале засунуть картинку?
И в каком формате она должна быть? Сомневаюсь, что можно просто нарисовать в Paint'е цветной кубик и всунуть его например коммандой LoadImage('kubic.bmp')... Это же ведь не так делается, может кто нить мне поможет, и объяснит на простеньком примере: ----------------------------------------------------------------------------------------------- -Где надо рисовать картинку? ![]() -Как ее отобразить на экране с помощью Pascal(что для этого нужно?), а еще лучше: -Как ее еще потом подвигать туда сюда, хотя бы просто без участия юзера(тобишь не управляя с клавы...)? Помогите ПЛЗ!!! :molitva: |
Masacre Ant |
![]()
Сообщение
#2
|
Гость ![]() |
И еще...
Как заставит по нормальному двигаться набранную примитивами Graph'а(rectangle, ellipse и т.д) картинку... ------------------------------------------------------------------------------------------------ Типа чтобы не делать так: нарисовал картинку (например элипс)... потом поверх нее нарисовал прямоугльник цветом фона(типа чтоб закрасить) потом нарисовать туже картинку но немного сдвинув куда-нить... ------------------------------------------------------------------------------------------------ А чтобы мона было делать так: нарисовал фон (например каку-нить цветную мазню) поместил на нем человечка из rectangle'ов убрал человечка (не изменив фон на котором он был нарисован) нарисовал человечка в другом месте... / \ / \ | | Вот как бы такое реализовать??? ![]() |
GoodWind |
![]()
Сообщение
#3
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Цитата Каким образом можно в программу на Паскале засунуть картинку? И в каком формате она должна быть? Сомневаюсь, что можно просто нарисовать в Paint'е цветной кубик и всунуть его например коммандой LoadImage('kubic.bmp')... ошибаетесь, Oleg_Z выкладывал на форум (воспользуйтесь поиском) модуль для чтения BMP файлов (их вы свободно можете рисовать в paint`e). разберитесь сначала с этим, потом и остальному научитесь, с нашей помощью ;) -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Вот что я не могу догнать - зачем на форуме поиск? Вставка картинок в Паскаль
|
Dark |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Мя решил немного помочь =)
выкладываю свои эксперименты Модули для работы с PCX файлами и спрайтами перенесены в: FAQ: Работа с графическими форматами Volvo -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Dark |
![]()
Сообщение
#6
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сама игра. Модули попробую в архиве пихнуть в рар архиве
Код Uses keyboard,VesaType,Vesa256,Sprite,pcx; var Stars:array[0..599] of PTStar; PShip:PTSShip; eog:boolean; {End Of Game} key:byte; {keyboard} i:integer; procedure CreateStars; var i1:integer; begin for i1:=0 to 599 do begin Stars[i1]:=CreateStar(random(800),random(600)); end; end; procedure DestroyStars; var i1:integer; begin for i1:=0 to 599 do begin DestroyStar(Stars[i1]); end; end; procedure MoveStars; var i1:integer; begin for i1:=0 to 599 do begin if Stars[i1]^.Spr^.y+Stars[i1]^.speed<=600 then Stars[i1]^.Spr^.y:=Stars[i1]^.Spr^.y+Stars[i1]^.speed else begin Stars[i1]^.Spr^.x:=random(800); Stars[i1]^.Spr^.y:=random(20); Stars[i1]^.speed:=random(7)+3; end; end; end; procedure MoveSShip(key:byte); begin case key of Up: PShip^.Spr^.y:=PShip^.Spr^.y-3; Down: PShip^.Spr^.y:=PShip^.Spr^.y+3; Left: PShip^.Spr^.x:=PShip^.Spr^.x-5; Right: PShip^.Spr^.x:=PShip^.Spr^.x+5; end; end; procedure DrawStars; begin for i:=0 to 599 do begin VPutPixel(Stars[i]^.Spr^.x,Stars[i]^.Spr^.y,Stars[i]^.col); end; end; procedure DrawBar; begin Drawpict(PShip^.Spr^.pict,PShip^.Spr^.x,PShip^.Spr^.y,false,0) end; begin randomize; CreateStars; PShip:=CreateSShip(50,500,'ship.pcx'); if ISVesa then VSetMode($103) else halt; Drawpict(PShip^.Spr^.pict,PShip^.Spr^.x,PShip^.Spr^.y,true,0); repeat ClBuf; VClrScr(0); DrawStars; DrawBar; MoveSShip(key); MoveStars; NextFlic; VRetrace; key:=Mreadkey; if key=esc then eog:=true; until eog; VClrScr(0); SetTextMode; DestroyStars; DestroySShip(PShip); end. Сообщение отредактировано: Dark - 27.12.2004 3:48 Прикрепленные файлы ![]() -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Dark |
![]()
Сообщение
#7
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вопросы?
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Dark |
![]()
Сообщение
#8
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
У этой вещи есть один недостаток - писалась давно, расчитана не на ньюбов в паскале, и это не простое перемещение =), ах да еще не оптимизированность
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Altair |
![]()
Сообщение
#9
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
offtopнаписал 3 отличных модуля -
1. вывод и сохранение PCX 2. то-же для BMP 3. сохранение в BMP скриншота в нестандартных видеорежимах (VESA и SVGA) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
MasacreAnt |
![]()
Сообщение
#10
|
Гость ![]() |
Гы пасиб конечно, а вот как я из пайнта суну 24битную картинку, в 16 цветов (VGA)??? Пускай даже и с юнитом???
А PCX этот вобще неохота даже юзать! Вобщем лучше я буду в своем редакторе рисовать примитивами Graph'овскими... Вы мне лучше скажите как бы мне по человечески двигать то нарисованную картинку, и еще: А вот процедура GetImage она хранит инфу только о текущей картинке помещенной в память или обовсех картинках загруженных до FreeMem... Тобиш если я один раз загружу картинку в память PutImage'ом ее пару раз вставлю, и захочу другую картинку скопировать и вставить, не теряя информации об предыдущей, это возможно??? |
Altair |
![]()
Сообщение
#11
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата 24битную картинку так ты 16 цветную запихивай ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Бродяжник |
![]()
Сообщение
#12
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если речь идет о стандартных GetImage и PutImage, то если в GetImage при каждом вызове указывать одну и ту же переменную, в которую мы сохраняем картинку, то, конечно же, хранится будет только одна, последняя из сохраненных картинок. Под каждый спрайт, который мы хотим хранить, нужно выделить отдельную переменную. По поводу перемещения картинок по фону: юзая Graph.TPU, лично я не нашел ничего лучшего, чем проделывать следующую последовательность шагов:
1. Сохранять участок экрана в месте вывода спрайта (GetImage) 2. Выводить подложку под спрайт - маску спрайта, где прозрачный цвет заменен черным, а любой непрозрачный цвет - белым. При этом выводить ее нужно в режиме ORPUT. В итоге, там где должен будет выводится спрайт, появится его белый контур, а фон не изменится. 3. Выводить сам спрайт поверх подложки; при этом прозрачный цвет нужно заменить белым, и выводить спрайт в режиме ANDPUT. В итоге сквозь белый цвет спрайта пробьется фон, а на белом фоне подложки отобразится сам спрайт. 4. После временной задержки восстанавливаем сохраненный участок экрана. Для реализации сей схемы я делал так: 1. Рисовал спрайт в своем пиксельном редакторе. При этом какой-то один цвет объявлялся прозрачным. 2. Этот спрайт обрабатывался программкой, которой генерила два новых спрайта: один - спрайт подложки, заменяя прозрачный цвет черным, а все остальные - белым, и "верхний" спрайт, заменяя прозрачный цвет белым. Работать это работает, но, вообще-то, BGI - жутко тормозная вещь. Стоило бы написать что-то свое, нормальное, быстрое... но я этого не потяну. Да и зачем, если есть ОпенГЛ? |
![]() ![]() |
![]() |
Текстовая версия | 6.08.2025 10:21 |