Помощь - Поиск - Пользователи - Календарь
Полная версия: Графика в Free Pascal
Форум «Всё о Паскале» > Pascal, Object Pascal > 32 битные компиляторы
abv
Есле у кого-то есть какая-нибудь инфа по работе с графикой в Free Pascal, скиньте плиз. Т.к. отличается работа с графикой во Фри паск, от Турбо паск.
Altair
Принципиально ни чем...
Но есть новые возможности, вот здесь подробно описанны они: (не обращайте на то, что там про TMT, почто все есть в
FPC).

http://pascal.sources.ru/tmt/doc/graph.htm

К 32 битным компиляторам есть отличные графические библиотеки с поддержкой OpenGL, например GraphiX, она поддерживает много медиа форматов:
Цитата
BMP - Windows Bitmap (uncompressed)  
Color Depth - 1,4,8,24 bits
  
Color Depth - 15,16,32 bits
  
Encoding/Compression - RLE4, RLE8
  
CUR - Windows Cursor (uncompressed)  
Color Depth - 1,4,8,24 bits
 
Encoding/Compression - RLE4, RLE8
 
Multiple Image
 
GIF - Graphics Interchange Format  
Color Depth - 1-8 bits
  
Encoding/Compression - LZW
  
Multiple Image
  
ICO - Windows Icon (uncompressed)  
Color Depth - 1,4,8,24 bits
 
Encoding/Compression - RLE4, RLE8
 
Multiple Image
 
JPG - JPEG Image Format  
Color Depth - grayscale, RGB
 
Encoding/Compression - standard, extended, progressive
 
PCX - Zsoft Paintbrush  
Color Depth - 1,4,8,8-gray, 24 bits
  (no 4 bit)
Encoding/Compression - RLE4, RLE8
  
PNG - Portable Network Graphics  
Color Depth - all
 
Encoding/Compression - Huffmann
 
PBP/PGM/PPM - Portable Bit/Gray/Pixel Map  
Color Depth - monochrome, gray, RGB
 
Encoding - ASCII, binary
 
TGA - Truevision Targa (uncompressed, RLE)  
Color Depth - 8,16,24,32 bits
  
TIF - Tagged Image Format (uncompressed)  
Color Depth - bilevel, palettized, RGB, CMYK
 
Encoding/Compression - packbits, LZW
 
Multiple Image
 
Image Saving Support for ... GraphiX for Freepascal GraphiX for Borland Pascal
BMP - Windows Bitmap - 24bit uncompressed
  
PPM - Portable Pixel Map - ASCII
  
TGA - Truevision Targa - 24bit uncompressed
  
Animation and Video Support for ... GraphiX for Freepascal GraphiX for Borland Pascal
AVI - Audio Video Interleave  
DIB - uncompressed - 8,16,24,32 bits
  
MS-RLE - 8 bits
  
MS Video 1 - 8,16 bits
  
Radius Cinepak - 24 bits
  
FLI/FLC - Autodesk ™ Animator - Animations  
Color Depth - 8 bits
  
GIF - GIF Animations  
Color Depth - 1-8 bits
  
MOV - Apple Quicktime ™ Movie  
Apple Animation - 8,16,24 bits
  
Radius Cinepak - 24 bits



Очень рекомендую эту библиотеку, она имеет отличный справочник, и очень быстрая.
Скачать можно отсюда:
http://stud3.tuwien.ac.at/%7Ee9826443/graphix/gxframe.html
Romtek
Здесь я это описал:
Графика в FPC, модуль Graph (Сообщ. #15)
SKVOZNJAK
За отсутсвием русской инфы я занимался ручной коррекцией машинного перевода. К сожалению, руки не дошли до конца модуля граф, но нужно рубить концы, иначе это никогда не закончится smile.gif Чтобы расшифровать перевод желательно посматривать в непереведённый вариант и в оригинальную html инфу прилагаемую к компилятору.
http://stiratel7.narod.ru/1/z0.html
Romtek
Кстати, кто знает, почему в нём не устанавливаются режимы 16-bit и выше?
С 8-bit всё нормально...
Guest
15 и 16 битные режимы в модуле граф устанавливаются, только вот на выходе из видухи получаются не те цвета smile.gif Тут какая-то несовместимось или недоработка. Заплатили-бы разработчикам за их труд, так и 24 битный режим наверняка пошёл бы на ура smile.gif
MeD
http://www.freepascal.org/contrib/db.php3 - для тех кто любит готовенькое smile.gif
MeD
Цитата
К 32 битным компиляторам есть отличные графические библиотеки с поддержкой OpenGL, например GraphiX


Олег, ну нету там подержки OpenGL. Он на DirectX основан.
warner
При попытке откомпилить Graphix для Фри паскаля выдает, что не найден модуль system ((( Перерыл все папки, но модуль этот так и не нашел (((
Что делать?
Guest
Цитата(warner @ 14.03.05 21:45)
При попытке откомпилить Graphix для Фри паскаля выдает, что не найден модуль system ((( Перерыл все папки, но модуль этот так и не нашел (((
Что делать?

Ой, то есть не систем, а DIRECTDRAW
Меня проглючило, не то написал ((((((((
Altair
1. GraphiX можно скомпилировать компилятором FPC 1.0.9 и FPC 1.9.8 aka 2RC

2. Target выстави в Win32, а у тебя наверно DOS32 стоит
Altair
А DirectDraw конечно, потому что еще надо скачать для компиляции библиотеку DirectXDist
из этой темы


Цитата
Библиотека для работы с DirectX
скачать
Guest
У меня FP 1.0.10 Full
Теперь все откомпилилось, только в модуле DirectX ругалось на слишком длинную строку....
Завтра буду разбираться, спасибо за подсказку!!!!
Altair
Так ты исправил строку длинную?
Или с чем ты хочешь разбираться?
Если что, обращайся...
warner
Я буду разбираться с рисованием с использованием этого модуля....
8)
warner
Код

uses graphix,crt;
var

BEGIN

InitGraphiX(ig_vesa,ig_lfb);
SetModeGraphiX(640,480,ig_col8);
bar(0,0,getmaxX,getmaxY,10);  
rectangle(50,50,getmaxX-50,getmaxY-50,0);
readkey;

END.


По идее программа должна отрисовать то что указано и ждать нажатия на кнопку, а потом выключаться...
Но она не реагирует ни на одну кнопку, попросту зависает....приходится вырубить через трехпальцевую комбинацию ((((
Как можно поправить эту ситуацию
Altair
Дык кто -же использует CRT ?????
Заменяй на GXCRT..... тут даже WinCRT не пройдет, у GraphiX'a свое все!
APAL
Со фрии паскалем не работал... но разве не надо там указывать CloseGraph; ?
Altair
А, еще совет, ты цвет указываешь как в TP всегдла указывается.... зачем? есть гораздо более эфективный способ!
RGBColorRGB(r,g,B)
где r, g,b -компоненты цвета.... -очень удобно!

пример черного:
bar(0,0,getmaxX,getmaxY,rgbcolorrgb(0,0,0));
Altair
Цитата
Со фрии паскалем не работал... но разве не надо там указывать CloseGraph; ?

теоретически он есть. Но его не особо приятно использовать smile.gif
warner
Хм... поставил gxcrt но зависон по-прежнему имеет место быть....

А за RGBColorRGB( r,g,B ) спасибо огромное!!!! smile.gif Тепрь только его и буду использовать 8)
Altair
попробуй так:
Код
{$APPTYPE GUI}
{$MODE OBJFPC}
uses graphix,gxcrt;

BEGIN
InitGraphiX(ig_col16,ig_col16);
SetModeGraphiX(640,480,ig_col16);
bar(0,0,getmaxX,getmaxY,10);
rectangle(50,50,getmaxX-50,getmaxY-50,0);
readkey;
END.


Это я к тому, что:
1. используй везде ig_col<БИТЫ> как я показал - так надежнее.
2. возможно у тебя перехватывала консоль readkey! надо включить без консоли:
$APPTYPE GUI
warner
Теперь все работает, спасибо огромное за помощ.
Наверное и правда консоль перехватывала readkey
8)
Altair
GraphiX классная штука! Если будут вопросы, всегда обращайся, я и MeD уже почти год пишем на нем...

Просто отличная штука... посмотри вот это:
http://forum.pascalnet.ru/index.php?showt...t=0&#entry37780
что бы поднять интерес! smile.gif
warner
Блин, так и не получилось откомпилить библиотеку freetype (((( Какие настройки компилятора только не перепробовал ((( Пришлите пожалуйста у кого есть откомпиленная на vizor@hotbox.ru , а то появилась надобность текст выводить в графическом режиме на экран...
Graphix это просто супер!! Я просто офигеваю от него!!!!
Altair
какой компилятор? какая версия точно?
А то мы так в воздухе летаем, у каждой версии FPC свои особенности!
warner
Compiler Version 1.0.10!
FreePascal IDE for Win32 Version 0.9.2 2003/06/27
Altair
Проблемматично.... его как раз у меня нет сейчас sad.gif
Ну а какие ошибки?
warner
ttinterp.pas(4343,30) Error: Incompatible types: got "<unknown type>" expected "<procedure variable type of procedure(PSTORAGE);>"

И так 50 ошибок в разных строках ((
Altair
Это клинический случай.
Качай FPC 1.0.9 и компилируй с ним.
Или забудь о GraphiX'е... sad.gif
Дож
А где можно найти описание самого GraphiX? Хотелось бы на русском... :help:
Altair
В архивес GraphiX'ом есть help.
русского нет.
а зачем?
Дож
Если б хэлп был русским, я быстрее с ним разобрался... Но все равно спс. smile.gif
Дож
В хелпе не нашел, какой цвет Graphix воспринимает как 100% прозрачный??? <_<
Altair
что значит прозрачный цвет? blink.gif
MeD
Цитата
В хелпе не нашел, какой цвет Graphix воспринимает как 100% прозрачный???


Для начала выводи картинки при помощи процедуры PutImageC.
Есле ты выводишь GIF, ICO, PNG с прозрачностью , то этого хватит.
Есле используешь другой формат, то после загрузки картинки пиши :
SetImageTransparencyColor(img,RGBcolorRGB(R,G,B ));
img - указатель на картинку; R,G,B - цвет который не рисуется.
Дож
Большое Спс! smile.gif

Цитата
что значит прозрачный цвет?


Такой цвет, который при рисовании картинки не рисуется.
Дож
Еще вопрос: есть интересный граф. режим 3Dfx. Является ли он особенным, какие возможности он дает?
MeD
Цитата
есть интересный граф. режим 3Dfx....


Сложно сказать точно. Проверить не начем. А так, поставь что угодно, результат будет темже.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.