/*Insert this as a function anywere, I used it in a seperate DLL to keep my form code clean. Just pass the Bitmap and the picture box to show it in to the function*/ public void greyscale(Bitmap bmp, PictureBox picBox) { BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); unsafe { byte* imgPtr = (byte*)(data.Scan0); byte red, green, blue; for (int i = 0; i < data.Height; i++) { for (int j = 0; j < data.Width; j++) { blue = imgPtr[0]; green = imgPtr[1]; red = imgPtr[2]; imgPtr[0] = imgPtr[1] = imgPtr[2] = (byte)(.299 * red + .587 * green + .114 * blue); imgPtr += 3; } imgPtr += data.Stride - data.Width * 3; } } bmp.UnlockBits(data); picBox.Image = bmp; }