我的地图是TGraphicControl
,其属性为
HexRow : Integer;
HexColumns : integer;
TempMap :TBitmap;
我想将所有这些数据保存到一个文件中。当我在文件中读到时,我可以获得所有这些数据。像这样......
Procedure Map.Load(name :String);
begin
Something.LoadfromFile(string);
TempMap := Something.Bitmap;
HexRow := Something.hexRow;
HexColumn := Something.HexColumn;
end;
但不知道"是什么"是。同样保存它应该保存所有这些属性
答案 0 :(得分:3)
您需要编写写入和读取信息的方法。您可以使用二进制编写器和读取器对象来完成它。
procedure TMap.SaveToStream(Stream: TStream);
var
Writer: TBinaryWriter;
begin
Writer := TBinaryWriter.Create(Stream);
try
Writer.Write(HexRow);
Writer.Write(HexColumn);
Bitmap.SaveToStream(Stream);
finally
Writer.Free;
end;
end;
procedure TMap.LoadFromStream(Stream: TStream);
var
Reader: TBinaryReader;
begin
Reader := TBinaryReader.Create(Stream);
try
HexRow := Reader.ReadInteger;
HexColumn := Reader.ReadInteger;
Bitmap.LoadFromStream(Stream);
finally
Reader.Free;
end;
end;
或者如果你想变得可爱,那么你可以先写下位图,然后在文件的末尾添加额外的信息。我认为大多数位图读取代码只会忽略最后存储的额外数字。当然,使用除您自己以外的任何软件进行往返旅行时,这些值都无法生存。
要保存到文件并从文件加载,请使用TFileStream
。
当然,这样的文件格式并没有为将来的增强和修改提供很大的空间。就个人而言,我认为我倾向于使用PNG格式。这为您提供压缩,我相信您可以添加自定义元数据。