内容简介:翻译自:https://stackoverflow.com/questions/16035300/make-wpf-image-load-async
我想加载Gravatar-Images并将它们从代码后面设置为WPF Image-Control.
所以代码看起来像
imgGravatar.Source = GetGravatarImage(email);
GetGravatarImage的样子:
BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.UriSource = new Uri( GravatarImage.GetURL( "http://www.gravatar.com/avatar.php?gravatar_id=" + email) , UriKind.Absolute ); bi.EndInit(); return bi;
不幸的是,当网络连接缓慢时,这会锁定GUI.有没有办法分配图像源,让它在后台加载图像而不阻塞UI?
谢谢!
我建议你在XAML的imgGravatar上使用Binding.在其上设置IsAsync = true,WPF将自动利用线程池中的线程来提取图像.您可以将解析逻辑封装到IValueConverter中,然后将电子邮件绑定为Source
在XAML中:
<Window.Resouces> <local:ImgConverter x:Key="imgConverter" /> </Window.Resource> ... <Image x:Name="imgGravatar" Source="{Binding Path=Email, Converter={StaticResource imgConverter}, IsAsync=true}" />
代码:
public class ImgConverter : IValueConverter { public override object Convert(object value, ...) { if (value != null) { BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.UriSource = new Uri( GravatarImage.GetURL( "http://www.gravatar.com/avatar.php?gravatar_id=" + value.ToString()) , UriKind.Absolute ); bi.EndInit(); return bi; } else { return null; } } }
翻译自:https://stackoverflow.com/questions/16035300/make-wpf-image-load-async
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot | :异步开发之异步调用
- 改进异步封装:处理带返回值的异步调用
- 异步发展流程 —— Generators + co 让异步更优雅
- 文件系统与异步操作——异步IO那些破事
- Opencv图像处理系列(六)—— 图像梯度
- opencv笔记(2):图像剪切和图像移位
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
机器学习及其应用2007
周志华 编 / 清华大学 / 2007-10 / 37.00元
机器学习是人工智能的一个核心研究领域,也是近年来计算机科学中最活跃的研究分支之一。目前,机器学习技术不仅在计算机科学的众多领域中大显身手,还成为一些交叉学科的重要支撑技术。本书邀请相关领域的专家撰文,以综述的形式介绍机器学习中一些领域的研究进展。全书共分13章,内容涉及高维数据降维、特征选择、支持向量机、聚类、强化学习、半监督学习、复杂网络、异构数据、商空间、距离度量以及机器学习在自然语言处理中的......一起来看看 《机器学习及其应用2007》 这本书的介绍吧!