Пример #1
0
 public void ArrayToList()
 {
     PixelList.Clear();
     foreach (CustomPixel p in Pixel2DArray)
     {
         PixelList.Add(p);
     }
 }
Пример #2
0
        /// <summary>
        /// Constructeur
        /// </summary>
        ///
        public LedMatrixContext()
        {
            if (Environment.MachineName != "PC-BENOIT")
            {
                PixelStrip = new DotStarStrip(NbrLed);
            }

            Pixels = new PixelList(Largeur, Hauteur);
        }
Пример #3
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;
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Constructeur
        /// </summary>
        public LedMatrixContext()
        {
            PixelStrip = new DotStarStrip(NbrLed);
            Pixels     = new PixelList(Largeur, Hauteur);

            Util.SetAnimation();
            Util.SetMeteoImg();
            Util.UpdateMeteo();

            //Animations = new AnimationList("Images");
            //MeteoImgs = new AnimationList("MeteoImg");
        }
Пример #5
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 = false)
        {
            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.SingleOrDefault(p => p.Position == couleur.Position + pixelOffset - slide) is Pixel pixel)
                        {
                            pixel.Couleur = couleur.Color;
                        }
                    }
                }
                else
                {
                    if (couleur.Position % Width < Width - slide)                     // Pour faire l'effet du slide de la droite
                    {
                        if (pixels.SingleOrDefault(p => p.Position == couleur.Position + pixelOffset + slide) is Pixel pixel)
                        {
                            pixel.Couleur = couleur.Color;
                        }
                    }
                }

                //Changement de ligne
                if (couleur.Position % Width == Width - 1)
                {
                    pixelOffset += newLine;
                }
            }
        }
Пример #6
0
        /// <summary>
        /// TetrisAnimation
        /// </summary>
        private static void TetrisAnimation(PixelList pixels, TetrisPieceList tetrisPieces)
        {
            pixels.BackGround(1);

            if (tetrisPieces.Any())
            {
                for (int anime = 0; anime < 10; anime++)
                {
                    foreach (TetrisPiece pieceTombe in tetrisPieces)
                    {
                        if (pixels.GetCoordonnee(pieceTombe.X, pieceTombe.Y) is Pixel pixel)
                        {
                            if (anime % 2 == 0)
                            {
                                foreach (TetrisPiece piece in tetrisPieces)
                                {
                                    piece.Couleur = Couleur.Noir;
                                }
                            }
                            else
                            {
                                foreach (TetrisPiece piece in tetrisPieces)
                                {
                                    piece.Couleur = piece.TmpCouleur;
                                }
                            }

                            pixel.SetColor(pieceTombe.Couleur);
                        }
                    }

                    Util.SetLeds();

                    using ManualResetEventSlim waitHandle = new ManualResetEventSlim(false);
                    waitHandle.Wait(TimeSpan.FromMilliseconds(40));
                }
            }
        }