delphi 一个保存*.BMP代码问题

请帮忙看看代码那里错误了varStream:TFileStream;Header:TBitmapFileHeader;BmpInfo:PBitMapInfo;Header... 请 帮忙看看 代码那里错误了

var
Stream: TFileStream;
Header: TBitmapFileHeader;
BmpInfo : PBitMapInfo;
HeaderSize, fh: Integer;
Width, Height : longint;
i, j, idx : integer;
pc : PTCellData;
pt : PTTileData;
TempImage : TAns2Image;
MapBlockData : TMapBlockData;
begin
Timer1.Enabled := FALSE;
SaveDialog1.FileName := '*.bmp';
if SaveDialog1.Execute then begin
Width :=MAXMAPLENGTH * 32;
Height:=MAXMAPLENGTH * 12;
HeaderSize := SizeOf(TBitmapInfo);
BmpInfo := AllocMem(HeaderSize);

with BmpInfo^.bmiHeader do
begin
biSize := SizeOf(TBitmapInfoHeader);
biWidth := Width;
biHeight := -Height;
biPlanes := 1;
biBitCount := 16; //always convert to 8 bit image
biCompression := BI_RGB;
biClrUsed := 0;
biClrImportant := 0;
end;
{
if BmpInfo^.bmiHeader.biHeight < 0 then begin
FlipBits(PByte(mapbuffer), Width*2, Height);
BmpInfo^.bmiHeader.biHeight := -BmpInfo^.bmiHeader.biHeight;
end;
}

FillChar (Header, sizeof(TBitmapFileHeader), 0);
with Header do begin
bfType := $4D42;
bfSize := 1078+Width*Height*2-1024;
bfOffBits := 1078-1024;
end;

// fh := FileCreate(FileName);
// FileClose(fh);

//Initialise and open file
Stream := TFileStream.Create(SaveDialog1.FileName, fmCreate or fmOpenWrite);
//Read file Header
Stream.WriteBuffer(Header, SizeOf(Header));
//Read bitmap info header and validate
Stream.WriteBuffer(BmpInfo^, SizeOf(TBitmapInfoHeader));
idx := 0;

for j := 0 to MAXMAPLENGTH -1 do begin
for i := 0 to MAXMAPLENGTH -1 do begin
pt := TileDataList.Items[3];
TempImage := TAns2Image.Create ( 32, 12, 0,0);
TempImage := TileDataList.GetTileImage (SelectedTile, i+j*pt^.nWCell);
Stream.WriteBuffer(TempImage.Bits , sizeof (TempImage.Bits));
TempImage.Free;
idx := idx + 1;
end;
end;
{
for j := 0 to MAXMAPLENGTH -1 do begin
for i := 0 to MAXMAPLENGTH -1 do begin
Stream.WriteBuffer(, LongInt(Width*Height -1));
end;
end;
}
Stream.Free;
FreeMem ( BmpInfo);

end;
Timer1.Enabled := TRUE;
end;
展开
 我来答
iloveyew
2008-05-13 · TA获得超过1349个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:162万
展开全部
你的这个
Stream.WriteBuffer(, LongInt(Width*Height -1)); 为什麼只有一个参数呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式