您的位置:首页 > 其它

在Silverlight中读取指定URL图片包数据

2008-06-17 09:21 323 查看
在silverlight开发,允许我们获取指定URL压缩包(zip)并读取其中的图片文件。而实现这个功能也

非常简单。下面是运行效果图:







首先,我们需要建立一个silverligth application ,名称为:DownLoadImg.



下面就是相应的page.xaml代码:

<Grid x:Name="LayoutRoot" Background="White">

<Grid.RowDefinitions>

<RowDefinition Height="250" />

<RowDefinition Height="100" />

<RowDefinition Height="50" />

</Grid.RowDefinitions>

<StackPanel Grid.Row="1">

<ListBox x:Name="ImageList"/>

<Button x:Name="Download" Click="StartDownLoad" Content="下载该图片"/>

</StackPanel>

<StackPanel Grid.Row="0">

<ScrollViewer HorizontalScrollBarVisibility="Auto" >

<Image x:Name="ImgToFill" >

</Image>

</ScrollViewer>

</StackPanel>

<StackPanel Grid.Row="2">

<Canvas Canvas.Top="70" >

<Rectangle Name="progressRectangle" Height="10" Width="0" Fill="AliceBlue" />

<Rectangle Height="12" Width="202" StrokeThickness="1" Stroke="Black" />

<TextBlock x:Name="progressText" Canvas.Left="210" Text="0%" FontSize="12" />

</Canvas>

</StackPanel>

</Grid>

接下来是page.xaml.cs(相关内容见注释):

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using System.IO;

using System.Windows.Resources;

using System.Windows.Media.Imaging;

namespace DownLoadImg

{

public partial class Page : UserControl

{

WebClient wc = new WebClient();

public Page()

{

InitializeComponent();

this.Loaded += new RoutedEventHandler(Page_Loaded);

}

//加载图片列表数据

void Page_Loaded(object sender, RoutedEventArgs e)

{

ImageList.Items.Add("1.jpg");

ImageList.Items.Add("2.png");

}

//实例化下载设置

void StartDownLoad(object o, EventArgs e)

{

//初始化相应控件信息

ImgToFill.Visibility = Visibility.Collapsed;

progressRectangle.Width = 0;

progressText.Text = "0%";

//绑定下载过程中处理的事件

wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);

wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);

//开始异步读取压缩包中的文件信息

wc.OpenReadAsync(new Uri("img.zip", UriKind.Relative), ImageList.SelectedItem);

}



void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)

{

//实例化流资源信息,准备获取其中的图片数据

StreamResourceInfo sri = new StreamResourceInfo(e.Result as Stream, null);

//要读取的图片路径信息

String sURI = e.UserState as String;

//从流资源中获取指定的URL图片流信息

StreamResourceInfo imageStream = Application.GetResourceStream(sri, new Uri(sURI, UriKind.Relative));

BitmapImage imgsrc = new BitmapImage();

//绑定该URL图片信息并进行显示

imgsrc.SetSource(imageStream.Stream);

ImgToFill.Source = imgsrc;

ImgToFill.Visibility = Visibility.Visible;

ImgToFill.Stretch = Stretch.Fill;

}

void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)

{

//下载过程中的进度显示

progressText.Text = e.ProgressPercentage.ToString() + "%";

progressRectangle.Width = (double)e.ProgressPercentage * 2;

}

}

}

好了,今天的内容就到这里了。



源码下载链接,请点击这里:)



TAG: silverlight, image, zip, daizhj,代震军
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: