IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

2 страниц V  1 2 >  
Closed Topic Открыть новую тему 
> Вставка картинок в Pascal
сообщение
Сообщение #1


Гость






Подскажите пожалуйста, как вставить bmp картинку в Borland Pascal
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Стандартных процедур в Паскале нет, надо использовать специальные модули, такие модули можно найти в интернете, даже на этом форуме я выкладывал модуль
BMP в разделе "Тестовый форум" тема TEST с автором Oleg_z
Чтобы использовать этот модуль, его надо откомпилировать,
(COMPILE->Destination disk, COMPILE->COMPILE), а в своей программе
в сроке USES прописать его, тогда станет доступна процедура
SBMI(FILEname:string; X,Y:Word; FDR:Integer),
где FILEname - путь к BMP файлу,
X,Y -координаты экрана, начиная с которых надо выводить рисунок( т.е если X=0, Y=0, то рисунок будет выведен в верхнем левом углу)
FDR - число показывающая смещение цвета, если вам нужно вывести рисунок такой, какой он виден в PAINT , то FDR равен 0
-----------------------------
Если вас интерисует структура BMP фала, то такую информацию легко найти
в интеренте:
http://www.wotsit.org - там есть описание многих типов файлов


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 84
Пол: Мужской

Репутация: -  2  +


Качай с моего сайта модуль для работы с bmp и никаких проблем!


--------------------
* Origin: "It's MY LIFE!!! © Jhon Bon Jovi"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






help me ъ ОПХДСЛЮК ЙПСРНИ ЛЕРНД ЯФЮРХЪ ЦПЮТХВЕЯЙНИ ХМТНПЛЮЖХХ. еЯКХ ОНКСВХРЯЪ РН НМ ОЕПЕОКЧМЕР БЯЕ ЦХТШ, ДФЕОЕЕЦХ Х Р. Д. оПХ ЩРНЛ ОПНЖЕМР ОНРЕПХ ХМТНПЛЮЖХХ 0 ОПНЖЕМРНБ. бНГЛНФМН Ъ Х НЬХАЮЧЯЭ, МН ОПЕДБЮПХРЕКЭМШЕ ПЮЯЯВЕРШ ОНЙЮГЮКХ, ВРН РЮЙ ХЛЕММН Х АСДЕР.
ъ ГМЮЧ delphi мн ъ ме гмюч йюй напюрхрэяъ й йюфдни рнвйе BMP ТЮИКЮ, Х ЙЮЙ ОНРНВЕВМН ЯНГДЮРЭ МНБШИ ТЮИК..
онлн-н-н-н-цхре!!
sergienkoanton@mail.ru
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Перевожу:
Цитата
help me Я придумал крутой метод сжатия графической информации. Если получится то он переплюнет все гифы, джепееги и т. д. При этом процент потери информации 0 процентов. Возможно я и ошибаюсь, но предварительные рассчеты показали, что так именно и будет.
Я знаю delphi НО Я НЕ ЗНАЮ КАК ОБРАТИТЬСЯ К КАЖДОЙ ТОЧКЕ BMP файла, и как поточечно создать новый файл..
ПОМО-О-О-О-ГИТЕ!!
sergienkoanton@mail.ru


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Ачто за кодировка?
APAL, ты у нас прямо перекодировщик

Антон, а про метод сжатия можно подробнее?

(юМРНМ=Антон) smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата(Oleg_Z @ 21.10.04 12:46)
Ачто за кодировка?
APAL, ты у нас прямо перекодировщик

KOI

Так показал Штирлиц вер.4


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


А у меня 4.01 версия... smile.gif У меня тоже. (APAL)
кстати КОИ - международный сетевой стандарт, не понимаю, почему весь рунет почти на вин кодироке...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Прошу прощения за оффтоп, даже БК-001x использует КОИ8-Р smile.gif


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


яЕПЦХЕМЙН юМРНМ
BMP-файл состоит из трех основных блоков: заголовок, палитра, массив пикселей. в заголовке задаются размеры, цветность. если цвет 24 или 32 бита, то палитра не нужна и массив будет не из байтов-номеров цветов, а из самих цветов, 3х или 4х-байтовых... с 15/16-битным цветом вроде бы и так и так можно делать, хотя по идее тоже без палитры должно быть, не знаю...

проще всего сделать с 32-битным цветом:
Код
var  data: array of TColor; //или просто of integer
    //это будет массив точек

    head: TBMPHeader; //это заголовок файла, структуру не помню, поищи на форуме

загружаешь данные из файла:
Код
 blockread(f,head,sizeof(head));
 setlength(data,head.Height,head.Width);
 blockread(f,data,head.Height*head.Width*4);

изменяешь заголовок head и массив data как хочешь...
запись делается аналогично с помощью blockwrite
только надо учитывать, что обычно картинка в BMP-файле хранится вверх ногами... и теоретически картинка может быть сжата (например алгоритмом RLE, это указывается в заголовке), хотя я сжатых BMP ни разу не видел
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата(P@sh@ @ 22.10.04 10:30)
Код
var  data: array of TColor; //или просто of integer

Код

 setlength(data,head.Height,head.Width);


а) только не в BP;
б) в общем солучае SizeOf(Integer) <> 4, а SizeOf(LongInt) = 4

В BP придется так:

Код

type
 PBitmapData = ^TBitmapData;
 TBitmapData = array[0..0] of record
   r, g, b,
   Res: Byte;
 end;

var
 Data: PBitmapData;
 DataSize: Word;
 Hdr: TBitmapHdr;

...

 BlockRead(f, Hdr, SizeOf(Hdr));
 DataSize := Hdr.Width * Hdr.Height shl 2;
 GetMem(Data, DataSize);
 BlockRead(f, Data^, DataSize);

...



--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


xds
а он написал, что знает Delphi, вот я и решил, что он на нем будет делать ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской

Репутация: -  0  +


Oleg_Z

Цитата
SBMI(FILEname:string; X,Y:Word; FDR:Integer),


чего то у меня не получилось...

Код
program test;
uses bmp, graph, crt;
var gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'D:\TP_71\TP\bgi');
{bar(0,0,20,20);}
SBMI('D:\P.bmp', 0, 0,0 );
readkey;
end.


выводит неизвестно что... sad.gif

Сообщение отредактировано: murphy -


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Бмп разные бывают, может этот модуль не все правильно воспринимает. Скажем, не читает информацию (описание) в начале файла, а сразу выводит "мясо" на экран. Попробуй нарисовать простейший бмп из 2-3 вертикальных полосок в разных графических редакторах и разных форматах.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской

Репутация: -  0  +


Шо я только не пробовал. :p6:
sad.gif sad.gif sad.gif sad.gif
:ypr:


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Дык надо графический драйвер нестандартный - VESA256 или SVGA256
(в тесовом форуме все есть)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской

Репутация: -  0  +


Oleg_Z
Скачал VESA256

что мне изменить здесь
Код

gd:=detect;
initgraph(gd,gm,'D:\TP_71\TP\bgi');


чтобы работало ?
:p2:

З.Ы. я не совсем с дровами разобрался


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






murphy
Я же, по-моему, в тестовом форуме давал:
Код
var dg, dm: integer;
...
gd:=installuserdriver('VESA256',nil);
initgraph(gd,gm,'');
if graphresult <> grok then halt;
...


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской

Репутация: -  0  +


volvo

Ну да :p2: :p2: :p2:

Offtop
У volvo класный аватар :D


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Пионер
**

Группа: Пользователи
Сообщений: 98
Пол: Мужской

Репутация: -  0  +


только у меня прога сразу вылетает когда запускаю


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 3:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name