Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2007, 23:03   #11
Vasya
Форумчанин Подтвердите свой е-майл
 
Аватар для Vasya
 
Регистрация: 21.01.2007
Сообщений: 193
По умолчанию

Допустим данные считаны из BMP в массив типа longint есть ли какой нибудь метод для его перевода в изображение на форму?
Vasya вне форума Ответить с цитированием
Старый 19.03.2007, 15:30   #12
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

А рисовать по точкам можно?

Кстати ты знаешь структуру BMP файла? В каких байтах хранятся размеры, глубина цвета и прочее? Нарисуй BMP 10х20 пусть верхняя половина будет белая, а нижняя - чёрная. Потом открой в HEX-редакторе и всё поймёшь. (при полноцветном режиме на каждый пиксель идёт 3 байта для чёрного FF FF FF для белого 00 00 00 - RGB кароче.)
И ещё запись идёт обратная! Т.е. информация о самом первом пикселе - в конце, о последнем - в начале. Зная RGB каждого пикселя, размеры - можно всё нарисовать

Строки пикселей разделяются двумя пустыми байтами 00 00.

Черно былые как-то по другому хранятся. Может по битово, но я ещё не разобрался.

Последний раз редактировалось zetrix; 19.03.2007 в 15:34.
zetrix вне форума Ответить с цитированием
Старый 19.03.2007, 20:07   #13
Vasya
Форумчанин Подтвердите свой е-майл
 
Аватар для Vasya
 
Регистрация: 21.01.2007
Сообщений: 193
По умолчанию

Цитата:
А рисовать по точкам можно?
мне кажется так и надо рисовать
Цитата:
Кстати ты знаешь структуру BMP файла?В каких байтах хранятся размеры, глубина цвета и прочее?
это все хранится в заголовке файла, вот формат заголовка:
Код:
type
  artype = array[0..0]of byte;
  arptr = ^artype;
  bmFileHeader = packed record    {заголовок файла}
    Typf : word;        {сигнатура }
    Size : longint;     {длина файла в байтах}
    Res1 : word;        {зарезервировано}
    Res2 : word;        {зарезервировано}
    OfBm : longint;     {смещение изображения в байтах (1078)}
  end;
  bmInfoHeader = packed record   {информационный заголовок}
    Size : longint;       {длина заголовка в байтах (40)}
    Widt : longint;       {ширина изображения (в точках)}
    Heig : longint;       {высота изображения (в точках)}
    Plan : word;          {число плоскостей (1)}
    BitC : word;          {глубина цвета (бит на точку) (8)}
    Comp : longint;       {тип компрессии (0 - нет)}
    SizI : longint;       {размер изображения в байтах}
    XppM : longint;       {горизонтальное разрешение}
                   {(точек на метр - обычно 0)}
    YppM : longint;       {вертикальное разрешение}
                  {(точек на метр - обычно 0)}
    NCoL : longint;       {число цветов}
                  {(если максимально допустимое - 0)}
    NCoI : longint;       {число основных цветов}
  end;
Если прочитать сначала заголовок, а потом считать в переменную идущие за заголовком данные и попробовать их вывести. Так не получится?

Последний раз редактировалось Vasya; 19.03.2007 в 23:32.
Vasya вне форума Ответить с цитированием
Старый 20.03.2007, 11:27   #14
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Должно получится. После заголовка сразу идут данные о последнем пикселе (правом нижнем), потом нижний препоследний и т.д.
zetrix вне форума Ответить с цитированием
Старый 22.03.2007, 23:21   #15
Vasya
Форумчанин Подтвердите свой е-майл
 
Аватар для Vasya
 
Регистрация: 21.01.2007
Сообщений: 193
По умолчанию

чет не получается с выводом на форму. с этой процедуры как можно на форму вывести?
вот код:
begin
assign(bmpfile,filename);
reset(bmpfile,1);
blockread(bmpfile,h,sizeof(h)); {чтение заголовка}
for i := 0 to yim-1 do begin {построчное чтение}
blockread(bmpfile,image^[(yim-i-1)*xim],xim);
if (xim mod 4) <> 0 then
blockread(bmpfile,s,4 - (xim mod 4));

end;
close(bmpfile);
end;
я так понимаю после blockread(bmpfile,image^[(yim-i-1)*xim],xim) нужно выводить элементы массива image на форму.
но какой процедурой это можно сделать???
Vasya вне форума Ответить с цитированием
Старый 23.03.2007, 16:53   #16
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Что-то вы сложности какие-то предлагаете. Просто компонент TIMAGE. В нем TBITMAP, в нём LoadFromFile или типа того. Простите за некоторую непонятность, я не программист вообще. =)
SteelRat вне форума Ответить с цитированием
Старый 23.03.2007, 18:26   #17
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от SteelRat Посмотреть сообщение
Что-то вы сложности какие-то предлагаете. Просто компонент TIMAGE. В нем TBITMAP, в нём LoadFromFile или типа того. Простите за некоторую непонятность, я не программист вообще. =)
Почитайте тему с самого начала. Там, к сожалению, сказано о существующих ограничениях на способы решения задачи:
Цитата:
нужно вывести на форму не используя стандартные методы вывода BMP, то есть организовать самому полностью вывод файла.
Честно говоря, я сам пребываю в растерянности - слишком мало инфы. Хотелось бы, чтобы автор все же уточнил у препода, каким способом нужно решить сей этюд. А то мы можем нечаянно какую-нибудь ноу-хау сконстролить, а окажется, что все гораздо проще...

Последний раз редактировалось mihali4; 24.03.2007 в 00:56.
mihali4 вне форума Ответить с цитированием
Старый 23.03.2007, 23:08   #18
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

А, пардон. Вечно я тороплюсь.
SteelRat вне форума Ответить с цитированием
Старый 24.03.2007, 00:59   #19
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от SteelRat Посмотреть сообщение
А, пардон. Вечно я тороплюсь.
Если это - быстрота ума, то можно только по хорошему позавидовать...
А если - просто торопливость, то это пройдет, не расстраивайтесь...
(Больше не флудим, а то накажут...)
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод из файла!!! Exclucive Общие вопросы C/C++ 2 24.05.2008 20:42
Как сделать так, что-бы при перетаскивании файла драг&дроп-ом на мою форму, он открывался??? Altera Общие вопросы Delphi 2 11.04.2008 15:00
проверка ввода данных в форму @Simpson JavaScript, Ajax 1 12.11.2007 02:17
Организовать ввод данных с файла созданного в первом задании и вывод их терминал. Saniok Помощь студентам 2 25.10.2007 22:25