Esempio n. 1
0
        public Bitmap GetBitmap()
        {
            MemoryStream memoryStream = new MemoryStream();

            ImageFactory imgF = new ImageFactory()
                                .Load(new Bitmap(Width, Height));

            SortLayers(); //better safe than sorry, probably not needed, todo [logging] check if this changes anything at anytime, then provide warning
            for (int i = 0; i < _layers.Count; i++)
            {
                DmiEXLayer dmiExLayer = _layers[i];
                if (!dmiExLayer.Visible)
                {
                    continue;
                }

                ImageLayer l = new ImageLayer {
                    Image = dmiExLayer.GetBitmap()
                };
                imgF.Overlay(l);
            }

            imgF.Resolution(Width, Height)
            .Format(new PngFormat())
            .BackgroundColor(Color.Transparent)
            .Save(memoryStream);

            return(new Bitmap(memoryStream));
        }
Esempio n. 2
0
        public DmiEXLayer GetLayerByIndex(int index)
        {
            DmiEXLayer layer = _layers.Find((l) => l.Index == index);

            if (layer == null)
            {
                throw new ArgumentException("No Layer with that Index exists");
            }
            return(layer);
        }
Esempio n. 3
0
        public void RemoveLayer(DmiEXLayer l)
        {
            if (_layers.Count == 1)
            {
                throw new WarningException("You can't remove the only Layer of the image");
            }

            l.IndexChanged -= SortLayers;
            l.Changed      -= OnImageChanged;
            _layers.Remove(l);
            LayerListChanged?.Invoke(this, EventArgs.Empty);
        }
Esempio n. 4
0
 private void ClearIndex(int index)
 {
     DmiEXLayer[] layers = _layers.ToArray();
     for (int i = 0; i < layers.Length; i++)
     {
         DmiEXLayer layer = layers[i];
         if (layer.Index != index)
         {
             continue;
         }
         layer.Index++;
         index++;
     }
 }
Esempio n. 5
0
        public DmiEXLayer AddLayer(DmiEXLayer l)
        {
            if (_layers.Contains(l))
            {
                throw new ArgumentException("Layer already part of image");
            }

            ClearIndex(l.Index);
            _layers.Add(l);
            SortLayers();
            l.IndexChanged += SortLayers;

            l.Changed += OnImageChanged; //any change on the layer means a change on the image
            LayerListChanged?.Invoke(this, EventArgs.Empty);
            return(l);
        }
Esempio n. 6
0
 public void SetLayerIndex(DmiEXLayer layer, int index)
 {
     ClearIndex(index);
     layer.Index = index;
 }