预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/IPrograming/archive/2012/02/24/WindowsPhone_Image_About.html"WindowsPhone笔记(4)图片操作 图片作为应用程序不可或缺,也是程序中最常见的元素之一,那么在WindowsPhone中该如何使用它呢?这就是这篇文章需要解决的问题。在Silverlight支持两个格式的图片显示,它们是:JPEG和PNG,PNG使用的是无损压缩算法,可以准确重建原始位图;而JPEG使用的是一种有损压缩算法,这种算法会对齐人们肉眼不易察觉到的一些可视信息这种压缩方式对照片这样的图像非常有效,但是却不适用于文本或基于矢量派生的位图,如建筑图和动画。 1.Image元素 在Silveright中,Image元素用来显示位图,但是Image元素并不是位图本身。现在我们通过一个简单是示例程序来学习如何在WindowsPhone开发中如何使用Image元素。首先新建一个SilverlightforWindowsPhone应用程序,在项目根目录下新建文件夹Images,在一张Silverlight支持格式的图片放到这个文件夹中,然后在页面中添加一个Image控件,最后将PhoneApplicationPage标记的SupportedOrientations属性值为PortraitOrLandscape,使程序能够支持横向显示。 下面是显示页面的MainPage.xaml代码: <ImageName="image1"Source="Images/Superman.jpg"/> 编译运行: 默认的情况,在保持正确的宽高比例的前提之下,Image元素会尽量放大或缩小以充满其容器(内容网格)。如果想要按原始像素尺寸显示图片的话,可以将Image的Stretch属性设置为None: <ImageName="image1"Source="Images/Superman.jpg"Stretch="None"/> 运行效果如下: 2.通过Web获取图像 Image可以通过Web来获取图像,只需要将Image的Source属性设置为一个可用的URL即可,如下面的示例所示: <ImageName="image1"Source="http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_sammy-2-anos.jpg"/> 运行效果如下: 这样Image元素就可以根据给定的URL从Web中下载图片并显示,这样就能够控制可执行文件的大小,但是考虑到WindowsPhone设备并不总是与Web连接,并且在图片下载过程中还可能遇到其他的问题。为了处理这种情况,我们可以根据Image元素的两个事件:ImageFailed(出现错误后发生)和ImageOpened(下载成功后发生),根据这两个事件来判断下载是否成功,从而使程序根据不同的情况作出相应的选择。 3.Image和ImageSource Image元素还有一些需要我们注意的地方,首先Image元素不是位图,它只是用来显示位图。从前面给出的示例,Image的Source属性被设置为一个相对文件路径或者一个可用URL,从表象上看,我们可以得出Source属性是字符串类型的结论,这并不正确。Source实际上是一个ImageSource类型,这是由于XAML语法隐藏了一些底层的是实现细节。ImageSource是一个抽象类,派生了BitmapSource,BitmapSource类型是另一个抽象类,他定义了一个名为SetSource的方法,该方法可以通过Stream对象加载图像。派生自BitmapSource的BitmapImage支持一个可接收Uri对象的构造函数,包括一个Uri类型的UriSource属性。 -->>表示派生 ImageSource-->>BitmapSource(SetSource方法,通过Stream对象加载图像)-->>BitmapImage(Uri类型的UriSource属性) 让我们来观察下面的示例程序: 这是MainPage.xmal的代码,添加一个Image元素,且没有设置其Source属性。 <ImageName="image1"/> 这是Mainpage.xmal.cs的触摸事件处理程序: protectedoverridevoidOnManipulationStarted(ManipulationStartedEventArgse){Uriuri=newUri("http://images.cnblogs.com/cnblogs_com/IPrograming/353645/o_samm