Exemple #1
0
        /// <summary>
        /// 从XNA媒体库中取到图片.
        /// 并且重新定义到目前大小.
        /// </summary>
        /// <param name="name">图片名称</param>
        /// <returns>通过stream定义图片大小, jpeg格式.</returns>
        public static Stream GetResizedImage(string name)
        {
            MediaLibrary      mediaLibrary      = new MediaLibrary();
            PictureCollection pictureCollection = mediaLibrary.Pictures;

            Picture picture = pictureCollection.Where(p => p.Name == name).FirstOrDefault();

            if (picture == null)
            {
                throw new InvalidOperationException(string.Format("不能加载图片 {0}. 图片可能被删除", name));
            }
            Stream      originalImageStream = picture.GetImage();
            BitmapImage bmp = new BitmapImage();

            bmp.SetSource(originalImageStream);
            WriteableBitmap originalImage = new WriteableBitmap(bmp);
            MemoryStream    targetStream  = new MemoryStream();

            originalImage.SaveJpeg(targetStream, ResizedImageWidth, ResizedImageHeight, 0, 100);

            // 现在图片被移到WriteableBitmap类, 原图片的stream被关闭.
            originalImageStream.Close();

            targetStream.Position = 0;
            return(targetStream);
        }