关于图片对象BitmapImage的BitmapCreateOptions

关于图片对象BitmapImage的BitmapCreateOptions,第1张

概述BitmapImage bitmapImage = new BitmapImage(new Uri(WebPath(uri), UriKind.Relative)); 的方式直接从Temporary Internet Files文件夹中提取该图片而不会启动再次下载了,共用缓存的性质使得Silverlight开发网络游戏更加简单,更加华丽。 但是,这里我想向大家强调的是一个非常重要且容易疏漏的问题:

BitmAPImage bitmAPImage = new BitmAPImage(new Uri(WebPath(uri), UriKind.relative));

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

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

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

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

至于把CreateOptions设定为CreateOptions = BitmapCreateOptions. IgnoreImageCache则更加危险了,细节还请大家自行体会。

总结

以上是内存溢出为你收集整理的关于图片对象BitmapImage的BitmapCreateOptions全部内容,希望文章能够帮你解决关于图片对象BitmapImage的BitmapCreateOptions所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067601.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存