Esempio n. 1
0
        /// <summary>Converts a Visual to an ImageSource</summary>
        /// <param name="surface">The surface.</param>
        /// <param name="width">The width.</param>
        /// <param name="height">The height.</param>
        /// <param name="format">The format.</param>
        /// <returns></returns>
        public static ImageSource ToImageSource(this Visual surface, int width, int height, RenderedImageFormat format)
        {
            if (surface == null) return null;

            var element = surface as FrameworkElement;
            if (element != null)
            {
                element.Height = 96;
                element.Width = 96;
                element.Arrange(new Rect(0d, 0d, 96d, 96d));
            }

            var renderBitmap = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
            renderBitmap.Render(surface);

            switch (format)
            {
                case RenderedImageFormat.Png:
                    var pngEncoder = new PngBitmapEncoder();
                    pngEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                    return pngEncoder.Frames[0];
                case RenderedImageFormat.Jpeg:
                    var jpegEncoder = new JpegBitmapEncoder();
                    jpegEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                    return jpegEncoder.Frames[0];
                case RenderedImageFormat.Tiff:
                    var tiffEncoder = new TiffBitmapEncoder();
                    tiffEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                    return tiffEncoder.Frames[0];
                case RenderedImageFormat.Bmp:
                    var bmpEncoder = new BmpBitmapEncoder();
                    bmpEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                    return bmpEncoder.Frames[0];
                case RenderedImageFormat.Gif:
                    var gifEncoder = new GifBitmapEncoder();
                    gifEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                    return gifEncoder.Frames[0];
            }
            return null;
        }
Esempio n. 2
0
        /// <summary>Converts a Visual to an ImageSource</summary>
        /// <param name="surface">The surface.</param>
        /// <param name="width">The width.</param>
        /// <param name="height">The height.</param>
        /// <param name="format">The format.</param>
        /// <returns></returns>
        public static ImageSource ToImageSource(this Visual surface, int width, int height, RenderedImageFormat format)
        {
            if (surface == null)
            {
                return(null);
            }

            var element = surface as FrameworkElement;

            if (element != null)
            {
                element.Height = 96;
                element.Width  = 96;
                element.Arrange(new Rect(0d, 0d, 96d, 96d));
            }

            var renderBitmap = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);

            renderBitmap.Render(surface);

            switch (format)
            {
            case RenderedImageFormat.Png:
                var pngEncoder = new PngBitmapEncoder();
                pngEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                return(pngEncoder.Frames[0]);

            case RenderedImageFormat.Jpeg:
                var jpegEncoder = new JpegBitmapEncoder();
                jpegEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                return(jpegEncoder.Frames[0]);

            case RenderedImageFormat.Tiff:
                var tiffEncoder = new TiffBitmapEncoder();
                tiffEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                return(tiffEncoder.Frames[0]);

            case RenderedImageFormat.Bmp:
                var bmpEncoder = new BmpBitmapEncoder();
                bmpEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                return(bmpEncoder.Frames[0]);

            case RenderedImageFormat.Gif:
                var gifEncoder = new GifBitmapEncoder();
                gifEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                return(gifEncoder.Frames[0]);
            }
            return(null);
        }