BlottoBeats.Client.MainForm.colorOverlay C# (CSharp) Метод

colorOverlay() приватный Метод

private colorOverlay ( Bitmap img, Color color ) : Bitmap
img System.Drawing.Bitmap
color Color
Результат System.Drawing.Bitmap
        private Bitmap colorOverlay(Bitmap img, Color color)
        {
            var bitmapData = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, img.PixelFormat);
            byte[] imageBytes = new byte[bitmapData.Stride * img.Height];
            System.Runtime.InteropServices.Marshal.Copy(bitmapData.Scan0, imageBytes, 0, imageBytes.Length);
            img.UnlockBits(bitmapData);
            int pixelSize = Image.GetPixelFormatSize(img.PixelFormat);

            int x = 0;
            int y = 0;
            var bitmap = new Bitmap(img.Width, img.Height);

            for (int i = 0; i < imageBytes.Length; i += pixelSize / 8)
            {
                var pixelData = new byte[4];
                Array.Copy(imageBytes, i, pixelData, 0, 4);
                var pxColor = Color.FromArgb(pixelData[0], pixelData[1], pixelData[2]);
                if (pixelData[3] != 0) bitmap.SetPixel(x, y, color);
                else bitmap.SetPixel(x, y, Color.Transparent);

                x++;
                if (x >= bitmap.Width)
                {
                    x = 0;
                    y++;
                }
            }

            return bitmap;
        }