.NET 4.x Изменить Alpha канал определенного пикселя - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, если не сложно помогите с решение моей проблемы, необходимо изменить прозрачность каждого n-го пикселя на изображении.
//создаю Bitmap
 bmp3 = new Bitmap(1024, 768, PixelFormat.Format16bppArgb1555);
 
 System.Drawing.Imaging.BitmapData BMP = bmp3.LockBits(Range, Mode, bmp3.PixelFormat);
IntPtr ptr = BMP.Scan0;
int bytes = Range.Height * BMP.Stride; ;
//создаю массив байтов
byte[] rgbAValues = new byte[bytes];
 
for (int counter = 0; counter < rgbAValues.Length; counter += 1)
                    {
                    //как изменить альфа канал этого пикселя??????
                    }
                    System.Runtime.InteropServices.Marshal.Copy(rgbAValues, 0, ptr, bytes);
  System.Runtime.InteropServices.Marshal.Copy(rgbAValues, 0, ptr, bytes);
bmp3.Save(@"C:\Screen4.png", ImageFormat.Png);
Подскажите пожалуйста, как влиять именно на прозрачность, а то я пишу
rgbAValues[counter] = 255;
но это только делает фон белым(((

Решение задачи: «.NET 4.x Изменить Alpha канал определенного пикселя»

textual
Листинг программы
 public static Image EraseFon(Image original, int deviation)
        {
            Bitmap myImage = new Bitmap(original);
 
            BitmapData imageData = myImage.LockBits(
new Rectangle(0, 0, myImage.Width, myImage.Height),
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
            int stride = imageData.Stride;
            IntPtr Scan0 = imageData.Scan0;
            unsafe
            {
                byte* p = (byte*)(void*)Scan0;
                int nOffset = stride - myImage.Width * 4;
                int nWidth = myImage.Width;
                for (int y = 0; y < myImage.Height; y++)
                {
                    for (int x = 0; x < nWidth; x++)
                    {
                        p[0]=... // задаём синий
                        p[1]=... // задаём зелёный
                        p[2]=... // задаём красный
                        p[3]=... // задаём альфа канал 0 - полностью прозрачный
                        p += 4; 
                    }
                    p += nOffset;
                }
            }
            myImage.UnlockBits(imageData);
            return (Image)myImage;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы