source: trunk/CrypPlugins/WorkspaceManager/Model/ImageModel.cs @ 1847

Last change on this file since 1847 was 1847, checked in by kopal, 11 years ago
  • added support for serializing/deserializing pictures into model files
File size: 2.1 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows.Media.Imaging;
6using System.IO;
7using System.Windows.Media;
8using System.Windows.Controls;
9
10
11namespace WorkspaceManager.Model
12{
13    /// <summary>
14    /// This class wraps a image which can be put onto the workspace
15    /// </summary>
16    [Serializable]
17    public class ImageModel : VisualElementModel
18    {
19        private byte[] data = null;
20        private int height;
21        private int width;
22        private int stride;
23
24        /// <summary>
25        /// Get the BitmapImage represented by this ImageModel
26        /// </summary>
27        /// <returns></returns>
28        public Image getImage()
29        {
30            Image image = new Image();           
31            if (data == null)
32            {
33                return image;
34            }
35
36            image.Source = BitmapImage.Create(width,
37                          height,
38                          96,
39                          96,
40                          System.Windows.Media.PixelFormats.Bgr32,
41                          null,
42                          data,
43                          stride);
44            return image;
45        }
46
47        /// <summary>
48        /// Instantiate a new ImageModel
49        /// </summary>
50        public ImageModel()           
51        {
52
53        }
54        /// <summary>
55        /// Instantiate a new ImageModel
56        /// </summary>
57        /// <param name="imageSource"></param>
58        public ImageModel(Uri imgUri)
59        {
60            if (imgUri == null)
61            {
62                return;
63            }
64
65            BitmapImage bmpImage = new BitmapImage(imgUri) ;
66            height = bmpImage.PixelHeight;
67            width = bmpImage.PixelWidth;
68            PixelFormat format = bmpImage.Format;
69            stride = width * ((format.BitsPerPixel + 7) / 8);           
70            byte[] byteImage = new byte[height * stride];
71            bmpImage.CopyPixels(byteImage, stride, 0);
72
73            this.data = byteImage;
74        }
75    }
76}
Note: See TracBrowser for help on using the repository browser.