public static Bitmap Create1BitBitmapFromRaw(bool[,] imageData)
        {
            if (imageData == null)
            {
                throw new ArgumentNullException("imageData");
            }

            var size       = FirmwareImageProcessor.GetImageSize(imageData);
            var result     = new Bitmap(size.Width, size.Height, PixelFormat.Format1bppIndexed);
            var bitmapData = result.LockBits(new Rectangle(0, 0, size.Width, size.Height), ImageLockMode.WriteOnly, PixelFormat.Format1bppIndexed);

            try
            {
                var scanLine = bitmapData.Scan0;
                for (var y = 0; y < size.Height; y++, scanLine += bitmapData.Stride)
                {
                    var line = new byte[bitmapData.Stride];
                    for (var x = 0; x < size.Width; x++)
                    {
                        if (imageData[x, y] == false)
                        {
                            continue;
                        }
                        line[x / 8] |= s_bitMasks[x % 8];
                    }
                    Marshal.Copy(line, 0, scanLine, bitmapData.Stride);
                }
            }
            finally
            {
                result.UnlockBits(bitmapData);
            }

            return(result);
        }
        public static Image CreateBitmapFromRaw([NotNull] bool[,] imageData, int pixelSize = 2)
        {
            if (imageData == null)
            {
                throw new ArgumentNullException("imageData");
            }

            var size   = FirmwareImageProcessor.GetImageSize(imageData);
            var result = new Bitmap(size.Width * pixelSize, size.Height * pixelSize);

            using (var gfx = Graphics.FromImage(result))
            {
                gfx.Clear(Color.Black);
                for (var col = 0; col < size.Width; col++)
                {
                    for (var row = 0; row < size.Height; row++)
                    {
                        if (!imageData[col, row])
                        {
                            continue;
                        }

                        if (pixelSize <= 1)
                        {
                            result.SetPixel(col, row, Color.White);
                        }
                        else
                        {
                            gfx.FillRectangle(Brushes.White, col * pixelSize, row * pixelSize, pixelSize, pixelSize);
                        }
                    }
                }
            }
            return(result);
        }
Esempio n. 3
0
        public void SetData([NotNull] List <bool[, ]> images)
        {
            if (images == null)
            {
                throw new ArgumentNullException("images");
            }

            var data = new List <ExportedImage>();

            foreach (var image in images)
            {
                var size = FirmwareImageProcessor.GetImageSize(image);
                data.Add(new ExportedImage(0, size, image)
                {
                    DataString = ResourcePacksStorage.WriteImageToAsciiString(size.Width, size.Height, image)
                });
            }
            var buffer = Serializer.Write(data);

            Clipboard.SetText(buffer);
        }