Я пытался установить альфа-значения вручную для растрового изображения в формате Format32bppArgb.В этом примере кода я устанавливаю их все на 0,5f, однако в будущем они будут иметь разные значения, а не на все 0,5f / 128 (так как это мой тестовый пример, чтобы это работало).Как правильно установить альфа-значения для растрового изображения?Я мог бы использовать SetPixel (), однако SetPixel () ужасно медленен для больших изображений по сравнению с простой блокировкой / разблокировкой растрового изображения.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData =
bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
bmp.PixelFormat);
// Get the address of the first line.
IntPtr ptr = bmpData.Scan0;
// Declare an array to hold the bytes of the bitmap.
int bytes = Math.Abs(bmpData.Stride) * bmp.Height;
byte[] rgbValues = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
for (int counter = 0; counter < rgbValues.Length; counter += 4)
{
rgbValues[counter] = 255;
rgbValues[counter + 1] = 255;
rgbValues[counter + 2] = 255;
rgbValues[counter + 3] = 128;
}
// Copy the RGB values back to the bitmap
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);
// Unlock the bits.
bmp.UnlockBits(bmpData);