Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.30;
Скачать: CL | DM;

Вниз

Кто знает формат .bmp, помогите   Найти похожие ветки 

 
выарп   (2003-08-24 17:52) [0]

//Специально для wl ©

Хочу отобразить .bmp файл на форме (ни какой практической цели этим не преследую).
Но вот не получается. Цвета не всегда (не для всякой бэ-эм-пэшки) правильно отображаются. Объясните, пожалуйста, что не так.

program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.RES}
begin
assign(bmpfile, "file.bmp");
reset(bmpfile,1);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
Close(bmpfile);
end.
//----------------
unit Unit1;
...
var
...
bmpfile: file;
buff: array[1..3072] of char;
numread, i: integer;
bmpwidth, bmpheight, x, y: integer;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
blockread(bmpfile, buff, sizeof(buff));
bmpwidth:=ord(buff[19])+ord(buff[20])*256+ord(buff[21])*256*256+ord(bu ff[22])*256*256*256;
bmpheight:=ord(buff[23])+ord(buff[24])*256+ord(buff[25])*256*256+ord(b uff[26])*256*256*256;
seek(bmpfile, 54);
x:=1; y:=bmpheight; i:=0;
repeat
blockread(bmpfile, buff, sizeof(buff), numread);
repeat
canvas.Pixels[x,y]:=ord(buff[1+i*3])+ord(buff[2+i*3])*256+ord(buff[3+i *3])*256*256;
inc(i);
inc(x);
if x>bmpwidth then begin x:=1; inc(y,-1) end;
until i=1024;
i:=0;
until numread=0;
end;


 
NightAngel ©   (2003-08-24 21:09) [1]

Может быть я и ошибаюсь, но на первый взгляд... BMP-файлы могут хранить сжатое изображение, используя технику группового кодирования. Где-то в заголовке есть dword указывающий, хранится ли данное растровое изображение в сжатом виде, а также метод его упаковки. Не могут быть сжаты только монохромные и полноцветные (true color) изображения. Точнее сказать не могу, т.к. под рукой нет описания формата BMP. Может быть в этом причина? Возможно, что я и ошибаюсь и причина не в этом. Разбираться более детально желания нет.


 
jel ©   (2003-08-25 09:55) [2]

В справке по WinApi посмотри описание структуры BITMAPINFOHEADER. В твоем случае правильно будут отображаться только файлы с определенной глубиной цвета (biBitCount = 24 бита), а ведь могут быть еще и другие значения.


 
panov ©   (2003-08-25 12:23) [3]

http://delphimaster.net/view/15-1061653740/



Страницы: 1 вся ветка

Текущий архив: 2003.10.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-98608
P0tia
2003-10-17 22:02
2003.10.30
Проблема с CoolBar


3-98468
AndrewK
2003-10-09 17:56
2003.10.30
Как определить, какая картинка в Stream?


1-98622
BOA_KAA
2003-10-16 16:58
2003.10.30
DLL


3-98440
TASADAR
2003-10-08 12:39
2003.10.30
как программно менять udl файл


1-98601
Talla2k
2003-10-19 16:21
2003.10.30
импорт экспорт