.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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д