图片的显示:

Windows Phone7中,有两种显示图片的方法:

(1)       借助Image控件,通过设置Image控件的Source属性指定图片源。

(2)       借助ImageBrush,通过设置ImageBrushImageSource属性指定图片源。

无论是Image. Source还是ImageBrush. ImageSource,所接受的数据类型都是BitmapSourceBitmapSource位于  命名空间下,是一个抽象的基类。

其子类有:

BitmapImage

WriteableBitmap

 

 

(1)URI类型的引用,使用构造方法BitmapImageUri

(2)对流的引用,使用其SetSource(Stream)方法

 

下面演示通过BitmapImageWriteableBitmap显示图片的方法

 

1XAML界面如下

图片的显示_第1张图片

2

通过BitmapImage显示图片

图片的显示_第2张图片

通过给定的Uri初始化一个BitmapImage对象并通过界面中的Image控件显示。

3)添加命名空间

using System.Windows.Media.Imaging;

using System.IO;

4)添加Uri对象的定义

Uri uri = new Uri("/MyShowImage;component/Images/班婕妤.jpg",UriKind.Relative);

5)添加两个按钮“从Uri加载”和“从流加载”,并定义事件

///

        /// Uri加载中

        ///

        ///

        ///

        private void btnLoadFromBitmapImageByUri_Click(object sender, RoutedEventArgs e)

        {

            BitmapImage bit = new BitmapImage(uri);

            p_w_picpath1.Source = bit;

        }

 

        ///

        /// 从流Stream中加载图片

        ///

        ///

        ///

        private void btnLoadFromBitmapImageByStream_Click(object sender, RoutedEventArgs e)

        {

            Stream stream = Application.GetResourceStream(uri).Stream;//

            BitmapImage bit = new BitmapImage();

            bit.SetSource(stream);

            p_w_picpath1.Source = bit;

        }


图片的显示_第3张图片

图片的显示_第4张图片

通过WriteableBitmap显示图片:

WriteableBitmap提供了一个可写的BitmapSource,是一个用途很广的类。可以提供逐像素操作图片的能力,以及抓取屏幕元素抓取多媒体的某一帧和抓取网络摄像头的能力。

(1)       WriteableBitmapInt32Int32)构造方法构造一个指定宽高度WriteableBitmap

(2)       WriteableBitmapBitmapSource)构造方法基于一个已存在的BitmapSource创建一个WriteableBitmap


图片的显示_第5张图片

添加命名空间:

using System.Windows.Media.Imaging;

处理事件代码:

private void btnLoadFromWriteableBitmapByPixels_Click(object sender, RoutedEventArgs e)

        {

            WriteableBitmap wbt = new WriteableBitmap(300,300);

            for (var i = 0; i < wbt.Pixels.Length; i++ )

            {

                wbt.Pixels[i] = int.MaxValue;

            }

            p_w_picpath1.Source = wbt;

        }

        private void btnLoadFromWriteableBitmapByElement_Click(object sender, RoutedEventArgs e)

        {

            WriteableBitmap wbt = new WriteableBitmap(this.LayoutRoot,null);

            p_w_picpath1.Source = wbt;

        }

运行结果为:

图片的显示_第6张图片

图片的显示_第7张图片

 

图片的显示_第8张图片