关于图片对象BitmapImage的BitmapCreateOptions

BitmapImage bitmapImage = new BitmapImage(new Uri(WebPath(uri), UriKind.Relative));

的方式直接从Temporary Internet Files文件夹中提取该图片而不会启动再次下载了,共用缓存的性质使得Silverlight开发网络游戏更加简单,更加华丽。

但是,这里我想向大家强调的是一个非常重要且容易疏漏的问题:请大家严重清楚认识BitmapImage的CreateOptions的三种缓存模式:BitmapCreateOptions.None、BitmapCreateOptions.DelayCreation、BitmapCreateOptions.IgnoreImageCache。

当CreateOptions设定为CreateOptions = BitmapCreateOptions.None时,不仅Temporary Internet Files文件夹中会保存一份该图片的原件,而且在内存中同样也会自动存一份;这就意味着我们就算人为的将Temporary Internet Files文件夹清空,当Silverlight程序再次请求获取该图片时,BitmapImage会直接从内存里提取而不会再次去下载或寻找Temporary Internet Files文件夹。

当CreateOptions设定为CreateOptions = BitmapCreateOptions. DelayCreation时,顾名思义图象是被延迟加载的,它是BitmapImage的默认值。图片仅存于Temporary Internet Files中,虽然减少了内存的占用,但在大图片重新加载时会相对卡些,毕竟读取内存的速度肯定是优于硬盘的;这还其次了,更大的问题是经过我反复测试,GC会时不时的作怪以至图像时常无法正确显示,大家可以自行尝试在特定地方例如场景切换完毕后执行GC.Collect()会出现一些相当诡异的事情,特别提醒大家注意。

至于把CreateOptions设定为CreateOptions = BitmapCreateOptions. IgnoreImageCache则更加危险了,细节还请大家自行体会。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值