/// <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; } } }
/// <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; }