Форум: "WinAPI";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизКто знает формат .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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c