示例#1
0
        //====== ctors

        protected ScreenTransition(ITextArrayReader prevGameModuleScreenSnapshot, TextCanvas canvas, GameTime gameTime) : base(gameTime)
        {
            Verify.NotNull(prevGameModuleScreenSnapshot, nameof(prevGameModuleScreenSnapshot));

            this.canvas = Verify.NotNull(canvas, nameof(canvas));

            if (prevGameModuleScreenSnapshot.Size.Equals(canvas.Size) == false)
            {
                throw new ArgumentException($"Sizes are not equal.");
            }

            this.prevGameModuleScreenSnapshot = TextImage.CreateCopyFrom(prevGameModuleScreenSnapshot);
        }
        //====== public methods

        public ITextArrayReader RenderImage()
        {
            byte[] digits09 = Value.ToString().Select(x => byte.Parse(x.ToString())).ToArray();

            int imageWidth = (digits09.Length * 4) - 1;
            var valueImage = new TextImage(new Size(imageWidth, 5));

            for (int i = 0; i < digits09.Length; i++)
            {
                var digitImage    = TextImage.CreateCopyFrom(BigDigits.GetDigit(digits09[i]));
                var digitPosition = new Point(i * 4, 0);

                digitImage.Canvas.Colorize(ForeColor, null);
                valueImage.Canvas.DrawImage(digitImage, digitPosition);
            }

            return(valueImage);
        }