static ImageListOptions ReadImageData(byte[] imageData)
        {
            var imageList = new ImageList();
            var info      = new SerializationInfo(typeof(ImageListStreamer), new FormatterConverter());

            info.AddValue("Data", imageData);
            var ctor     = typeof(ImageListStreamer).GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(SerializationInfo), typeof(StreamingContext) }, null);
            var streamer = (ImageListStreamer)ctor.Invoke(new object[] { info, new StreamingContext(StreamingContextStates.All) });

            imageList.ImageStream = streamer;

            var opts = new ImageListOptions();

            opts.ColorDepth       = imageList.ColorDepth;
            opts.ImageSize        = imageList.ImageSize;
            opts.TransparentColor = imageList.TransparentColor;

            for (int i = 0; i < imageList.Images.Count; i++)
            {
                var bitmap = imageList.Images[i];
                var stream = new MemoryStream();
                bitmap.Save(stream, ImageFormat.Bmp);
                opts.ImageSources.Add(ImageResourceElementTreeNode.CreateImageSource(stream.ToArray()));
            }

            return(opts);
        }
        public override string CheckCanUpdateData(ResourceElement newResElem)
        {
            var res = base.CheckCanUpdateData(newResElem);

            if (!string.IsNullOrEmpty(res))
            {
                return(res);
            }

            var binData = (BinaryResourceData)newResElem.ResourceData;

            byte[] imageData;
            if (!SerializedImageResourceElementTreeNodeFactory.GetImageData(GetModule(this), binData.TypeName, binData.Data, out imageData))
            {
                return("The new data is not an image.");
            }

            try {
                ImageResourceElementTreeNode.CreateImageSource(imageData);
            }
            catch {
                return("The new data is not an image.");
            }

            return(string.Empty);
        }
 void InitializeImageData(byte[] imageData)
 {
     this.imageData   = imageData;
     this.imageSource = ImageResourceElementTreeNode.CreateImageSource(imageData);
 }
Example #4
0
 public ImageResourceTreeNode(EmbeddedResource er)
     : base(er)
 {
     this.imageData   = er.GetResourceData();
     this.imageSource = ImageResourceElementTreeNode.CreateImageSource(this.imageData);
 }