用WPF实现网络下载图片显示
要求:
1.通过线程方式进行网络图片下载(图片地址:http://s1.hao123img.com/index/images/newlogo-186X68.png)
2.下载图片过程中应优先考虑程序界面不会卡死
3.图片下载完成后立即显示界面
最近在学线程,找了一个题目,尝试了一下,做不出来,请大家帮帮忙,贴出代码。
public delegate void DownPicDelegate();
private void btnDownLoad_Click(object sender, RoutedEventArgs e)
{
btnDownLoad.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new DownPicDelegate(DownLoadImage));
}
private void DownLoadImage()
{
if (File.Exists(@"d:\mobile.gif"))
{
File.Delete(@"d:\mobile.gif");
}
System.Net.WebClient wc = new System.Net.WebClient();
wc.Headers.Add("User-Agent", "Chrome");
wc.DownloadFile("http://s1.hao123img.com/index/images/newlogo-186X68.png", @"d:\mobile.gif");
BitmapImage image = new BitmapImage(new Uri(@"d:\mobile.gif", UriKind.Absolute));
img.Source = image;
}
wpf没玩过,思路就像下面这样
1、首先,你要使用ThreadPool去开启一个线程执行你下载你的图片的委托。(.net4.5还可以使用TPL)
2、委托代码类似如下:
string url = "http://images.cnblogs.com/logo_small.gif"; string filepath = "x:\\pic.jpg"; WebClient mywebclient = new WebClient(); mywebclient.DownloadFile(url, filepath);
3、通过步骤二会得到图片的二进制流,然后使用委托中还要加入使用Dispatcher的Invoke或BeginInvoke方法把图片放到你指定的控件上。