本帖最后由 diaya 于 2013-12-11 10:02:48 编辑

解决方案 »

  1.   

    没人知道吗?有人用过image_remove吗?
      

  2.   

    目的是: 因image list的图太多了,想将其取一个,就删一个,这样可以加快image list里取图的速度,不然会很慢。
    这个想法应该有问题
    1,删除一个图片应该是一个费时的操作,必须创建一个新的,然后将旧的拷贝到新的
    2,访问N多图片中的一个和访问两三个中的一个费时应该没有什么差别,因为访问只需根据序号计算偏移量,按偏移量取数据即可至于说移除后,还存在,你可以跟踪一下代码,看看什么参数在影响
      

  3.   

    “目的是: 因image list的图太多了,想将其取一个,就删一个,这样可以加快image list里取图的速度,不然会很慢。”之所以这样想,是想着其list,如栈的方式,从前面删,如同出栈,想着可能快点,但好像是要花时间,那移除后还存在,就是因循环太快,删除要时间,再访问,那第一个还没删掉。删的动作好像是多线程做的。谢谢worldy, 你说的是对的,但不知怎样才能加快list的取图速度?不然太慢了。主要是想让win8的系统图标列表的每个icon,与自定义的图标合成生成新的list,但这个合成的动作很慢,这win8的小图标有400多个,每个取icon,合成,再加入新list,好慢哟!
      

  4.   

    那400个小图标的list,取icon句柄时,前50个还好,但之后,越到后面,越慢。所以才有取一个删一个的想法,希望快点。
      

  5.   


    LZ你也使用一下回复功能,不然人家怎么知道你有什么想法,难不成每次点进去看看?你问题是你的做法有问题,ImageList本质是一个位图而不是若干个,添加一个必须通过MemDC进行BitBlt,使用运行时添加进的方式当然会很慢
    比较简单的办法是使用ImageList数组,每次新的位图就添加到数组中,而不用添加到一个ImageList中