没必要这样复杂。图片就存储在硬盘上好了,不必调入内存,那样读入显示更快。而你那些符合条件的图片,只需要用数据库或数组存放它们的文件名即可。显示图片用Image控件,那是支持高精度图的。
ImageList控件,似乎是VB之类用来放工具栏图片用的,那些是极微小的图片,精度和颜色深度也不高,才可以集中存放在内存中。你说的内存不足错误,估计是该控件设计时本就不打算用于存储大数据量的图片,预先分配的空间很少。至于你提到颜色失真问题,可能也是该控件调整了图片的颜色深度所致(要把整幅图全部放入内存中,设计者限制了数据最大容量,在将图片实体放入时做了转换处理)。但其实,在VFP中是不需要用这个东西的。