以前用winform的PictureBox时没有试过加载网络的图片,刚刚看到一段代码才了解到原来还有LoadAsync这个方法,可以异步加载图片,再加上LoadProgressChanged事件也可以获得当前加载的进度。
在窗体上放一个PictureBox控件,一个按钮,一个进度条控件,再用Label来显示当前进度百分比,具体代码如下:
private void button1_Click(object sender, EventArgs e)
{
try
{
pictureBox1.WaitOnLoad = false;
pictureBox1.LoadAsync(
"http://hiphotos.baidu.com/18826860/pic/item/c68220d54518d3ef562c841c.jpg");
}
catch
{
MessageBox.Show( "网络连接失败");
}
}
给PictureBox加上LoadProgressChanged事件,LoadAsync方法将会触发此事件,当前的进度可以从e.ProgressPercentage中取得
private void pictureBox1_LoadProgressChanged(object
sender, System.ComponentModel.ProgressChangedEventArgs
e)
{
progressBar1.Value = e.ProgressPercentage;
label1.Text =
e.ProgressPercentage.ToString() + "%";
}