Pointers in C# (CSharp) .. example with bits..
Feb 12, 2009 in .Net, Microsoft
// 32 bit source Bitmap
System.Drawing.Bitmap b
int bWidth, bHeight;
int idx = 0;
bWidth = b.Width;
bHeight = b.Height;
byte[,] Disp = new byte[bWidth, bHeight];
// create a new 16 bit bitmap
Bitmap b565 = new Bitmap(b.Size.Width,b.Size.Height,System.Drawing.Imaging.PixelFormat.Format16bppRgb565);
Graphics g = Graphics.FromImage(b565);
// draw the 32 bit source bitmap to the 16 bit bitmap
g.DrawImage(b, new Point(0, 0));
g.Dispose();
BitmapData bmd = b565.LockBits(new Rectangle(0, 0, 480, 272), System.Drawing.Imaging.ImageLockMode.ReadOnly, b565.PixelFormat);
byte[] Result = new byte[bWidth * bHeight * 2];
unsafe
{
// get a pointer to the beginning of image data in the 16 bit bitmap
byte* bitdata = (byte*)bmd.Scan0;
for (int y = 0; y < bmd.Height*bmd.Width*2; y++)
{
// just copy the image data from the Bitmap to the byte array
Result[y] = bitdata[y];
}
}
b565.UnlockBits(bmd);
USBD480_DrawFullScreen(ref di, Result);
