示例#1
0
        public static byte[] ImageToBytes(System.Windows.Media.Imaging.BitmapEncoder encoder, System.Windows.Media.ImageSource imageSource)
        {
            byte[] bytes        = null;
            var    bitmapSource = imageSource as System.Windows.Media.Imaging.BitmapSource;

            if (bitmapSource != null)
            {
                encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bitmapSource));

                using (var stream = new System.IO.MemoryStream())
                {
                    encoder.Save(stream);
                    bytes = stream.ToArray();
                }
            }

            return(bytes);
        }
示例#2
0
        /// <summary>
        /// Função privada para converter a o Chart para imagem
        /// </summary>
        /// <param name="visual">Objeto que deseja salvar em tipo PNG</param>
        /// <param name="filename">Onde será salvo</param>
        /// <param name="encoder">Tipo de codificação da imagem</param>
        private static void EncodeVisual(FrameworkElement visual, string filename, System.Windows.Media.Imaging.BitmapEncoder encoder)
        {
            try
            {
                // Os itens 96 e 74 deve-se ser modificado conforme a necessidade da imagem.
                var bitmap = new System.Windows.Media.Imaging.RenderTargetBitmap((int)visual.ActualWidth, (int)visual.ActualHeight, 96, 74, PixelFormats.Pbgra32);

                bitmap.Render(visual);

                var frame = System.Windows.Media.Imaging.BitmapFrame.Create(bitmap);
                encoder.Frames.Add(frame);

                using (var stream = File.Create(filename)) encoder.Save(stream);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error Message");
            }
        }