2008年9月27日
最近一直被巨型文件的处理所困扰着,比如4GB以上的位图文件,完全加载到内存中是完全不可能实现的,这个时候不得已采用了Windows的内存文件映射内核对象,而且对于单色图、16色图即使单纯的使用内存文件映射也无济于事,因为每个像素都不是整字节存储的,所以要现转换成整字节方式,这个时候就要创建临时文件。但是创建临时文件有个不好的地方,就是在显示图片时你还要给他转回去,麻烦至极,因为Windows显示的时候只能用位图的形式显示,还是麻烦,又要生成一个临时文件。
实在是烦,中午出去散了散心,走着走着想到一个不错的主意,那就是采用纵向卷轴的方法部分的加载图像,也就是说,假定Client Area的高度是100,那么我只加载100行的图像信息,在这个范围外的数据不加载,当滚动条滚动的时候再重新加载,这样,内存的占有量就得到了控制,使处理巨型文件成为了可能。
当然,想法有了,现在要编,还是麻烦,这意味着前面写的代码大半不能用了,好是郁闷,不过没有办法,来吧。