本人刚刚开始学习delphi.最近,在看一段关于图像流存取的代码时,对其中一句甚为疑惑,请各位前辈不吝赐教,先行谢过.
procedure SaveBitmapToStream(aBitmap: TBitmap; aStream: TStream);
var
ms: TMemoryStream;
size: Integer;
begin
Assert(Assigned(aBitmap));
Assert(Assigned(aStream));
ms := TMemoryStream.Create;
try
aBitmap.SaveToStream(ms);
ms.position := 0;
size := ms.Size;
aStream.WriteBuffer(size, Sizeof(size));
aStream.CopyFrom(ms, size);
finally
ms.free
end;
end;
这是一个图像存取源代码中一个自定义例程,为节省空间,其它代码就不贴出,相信各位能够看懂.我感到疑惑的是aStream.WriteBuffer(size, Sizeof(size))这一句.按照WriteBuffer的定义,它不是从什么缓冲区内读数据入流吗?这个问题困惑我已有一段时间了,请前辈们不要见笑,帮初学者一个忙,详细地解释一下这句的功能,及这句话里的两个参数的意义.
procedure SaveBitmapToStream(aBitmap: TBitmap; aStream: TStream);
var
ms: TMemoryStream;
size: Integer;
begin
Assert(Assigned(aBitmap));
Assert(Assigned(aStream));
ms := TMemoryStream.Create;
try
aBitmap.SaveToStream(ms);
ms.position := 0;
size := ms.Size;
aStream.WriteBuffer(size, Sizeof(size));
aStream.CopyFrom(ms, size);
finally
ms.free
end;
end;
这是一个图像存取源代码中一个自定义例程,为节省空间,其它代码就不贴出,相信各位能够看懂.我感到疑惑的是aStream.WriteBuffer(size, Sizeof(size))这一句.按照WriteBuffer的定义,它不是从什么缓冲区内读数据入流吗?这个问题困惑我已有一段时间了,请前辈们不要见笑,帮初学者一个忙,详细地解释一下这句的功能,及这句话里的两个参数的意义.
解决方案 »
- treeview 遍历根节点?
- 小游戏盒子(客户端)用什么软件开发的!
- 关于Combobox与Popumenu菜单的联合问题
- 超級問題:如何控制Delphi?
- 请问如何动态画一条直线
- 如何保存和打开注册文件?
- 我想做个三层结构的数据库管理系统,请问哪有源程序或提示什么的?
- 我的机是win98,可以上Internet(透明代理),如何使我局域网内的其它机也能上Internet?
- ===有关打印的问题,十万火急?
- 有一个计算字段,类型是Float型,查询和打印的时候怎么控制小数点后面的位数?
- 如何获取随机不重复的整数
- 8091858lin兄弟进来,关于拼音控件的使用问题。其他知道的高手也可以解释解释。
这里:
aStream 是流对象
WriteBuffer 是流方法,用于将一些数据写入流
size 这里是要写入的数据
Sizeof(size) 是要写入的数据的大小
1. Bitmap数据的大小
2. Bitmap数据aStream.WriteBuffer(size, Sizeof(size)); //完成填写第1部分的内容aStream.CopyFrom(ms, size); //完成填写第2部分的内容