Esempio n. 1
0
        /// <summary>
        /// SetÞixelFrame
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="pixels"></param>
        public void SetÞixelFrame(int frame, PixelList pixels, int slide, bool fadeOut)
        {
            using (Image image = Image.FromFile(FileName))
            {
                List <byte[]> frames = new List <byte[]>();

                if (FrameCount > 1)
                {
                    foreach (Bitmap bitmap in ParseFrames((Bitmap)image))
                    {
                        frames.Add(BitmapToByte(bitmap));
                    }
                }
                else
                {
                    frames.Add(BitmapToByte((Bitmap)image));
                }

                Couleurs = new CouleurList(frames);
            }

            int heightOffset = (pixels.Hauteur - Height) / 2;
            int widthOffset  = (pixels.Largeur - Width) / 2;
            int newLine      = pixels.Largeur - Width;
            int pixelOffset  = heightOffset * pixels.Largeur + widthOffset + 1;
            int frameCourant = frame % FrameCount;

            foreach (Couleur couleur in Couleurs.Where(c => c.FrameCompteur == frameCourant))
            {
                if (fadeOut)
                {
                    if (couleur.Position % Width >= slide) // Pour faire l'effet du slide vers la gauche
                    {
                        if (pixels.Find(p => p.Position == couleur.Position + pixelOffset - slide) is Pixel pixel)
                        {
                            pixel.Couleur = couleur;
                        }
                    }
                }
                else
                {
                    if (couleur.Position % Width < Width - slide) // Pour faire l'effet du slide de la droite
                    {
                        if (pixels.Find(p => p.Position == couleur.Position + pixelOffset + slide) is Pixel pixel)
                        {
                            pixel.Couleur = couleur;
                        }
                    }
                }

                //Changement de ligne
                if (couleur.Position % Width == Width - 1)
                {
                    pixelOffset += newLine;
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Constructeur
        /// </summary>
        /// <param name="path"></param>
        public ImageClass(string fileNameOfImage)
        {
            Task <BitmapDecoder> bitmap = Task.Run(async() => await BitmapDecoderGet(fileNameOfImage));

            FrameCount = (int)bitmap.Result.FrameCount;

            if (Animation)
            {
                Task <List <byte[]> > pixel = Task.Run(async() => await GetPixelFrame(bitmap.Result));
                Couleurs = new CouleurList(pixel.Result);
            }
            else
            {
                Task <byte[]> pixel = Task.Run(async() => await GetPixel(bitmap.Result));
                Couleurs = new CouleurList(pixel.Result);
            }

            Height = (int)bitmap.Result.PixelHeight;
            Width  = (int)bitmap.Result.PixelWidth;
        }