public void UpdateCharSet(CharSet TheCharSet)
        {
            var index = animSets.FindIndex(o => o.Id == TheCharSet.Id);

            if (index > -1)
            {
                animSets.RemoveAt(index);
                animSets.Insert(index, TheCharSet.Clone());

                var img    = animImages[index];
                var newImg = TheCharSet.GenerateImage();

                if (currentIndex == index)
                {
                    animPic.Image = newImg;
                }

                img.Dispose();
                animImages.RemoveAt(index);
                animImages.Insert(index, newImg);
            }
        }
        void DrawElement()
        {
            elementView.Image = null;

            if (currentTexture != null)
            {
                currentTexture.Dispose();
            }

            if (set == null)
            {
                return;
            }

            if (scale == 1)
            {
                currentTexture = set.GenerateImage();
                Brush    br = new SolidBrush(overColor);
                Graphics g  = Graphics.FromImage(currentTexture);
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
                g.PixelOffsetMode   = System.Drawing.Drawing2D.PixelOffsetMode.Half;
                g.FillRectangle(br, 0, 0, currentTexture.Width, currentTexture.Height);
                br.Dispose();
                g.Dispose();
            }
            else
            {
                if (set.Width < 3 && set.Height < 3)
                {
                    scale          = 1;
                    currentTexture = set.GenerateImage();

                    if (overColor.A != 0)
                    {
                        Brush    br = new SolidBrush(overColor);
                        Graphics g  = Graphics.FromImage(currentTexture);
                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
                        g.PixelOffsetMode   = System.Drawing.Drawing2D.PixelOffsetMode.Half;
                        g.FillRectangle(br, 0, 0, currentTexture.Width, currentTexture.Height);
                        br.Dispose();
                        g.Dispose();
                    }
                }
                else
                {
                    int he = set.Height == 3 ? 3 + scale - 1 : set.Height;
                    int wi = set.Width == 3 ? 3 + scale - 1 : set.Width;

                    currentTexture = new Bitmap(wi * 8, he * 8, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

                    Graphics g = Graphics.FromImage(currentTexture);
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
                    g.PixelOffsetMode   = System.Drawing.Drawing2D.PixelOffsetMode.Half;

                    var charImages = set.GenerateCharImages();

                    for (int y = 0; y < he; y++)
                    {
                        for (int x = 0; x < wi; x++)
                        {
                            int xI = set.Width == 3 ? (x == 0 ? 0 : (x == wi - 1 ? 2 : 1)) : x;
                            int yI = set.Height == 3 ? (y == 0 ? 0 : (y == he - 1 ? 2 : 1)) : y;

                            int index = set.GetCharIndex(xI, yI);
                            g.DrawImageUnscaled(charImages[index], x * 8, y * 8);
                        }
                    }

                    if (overColor.A != 0)
                    {
                        Brush br = new SolidBrush(overColor);
                        g.FillRectangle(br, 0, 0, currentTexture.Width, currentTexture.Height);
                        br.Dispose();
                    }

                    foreach (var image in charImages)
                    {
                        image.Dispose();
                    }

                    g.Dispose();
                }
            }

            elementView.Image = currentTexture;
            this.Width        = currentTexture.Width * pixelScale;
            this.Height       = currentTexture.Height * pixelScale;
        }
 public void AddCharSet(CharSet NewSet)
 {
     animSets.Add(NewSet.Clone());
     animImages.Add(NewSet.GenerateImage());
 }