Advertisement
Guest User

Bitmap.LockBits

a guest
Mar 20th, 2013
589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.69 KB | None | 0 0
  1.         private int[][] makeJaggedArray(int rowsCount, int columsCount)
  2.         {
  3.             int[][] jaggedArray = new int[rowsCount][];
  4.             for (int row = 0; row < rowsCount; row++)
  5.             {
  6.                 jaggedArray[row]= new int[columsCount];
  7.             }
  8.             return jaggedArray;
  9.         }
  10.  
  11.         private int[][] makePixelsMatrix()
  12.         {
  13.             var bmp = new Bitmap(this.pictureBox1.Image);
  14.             var rect = Rectangle.FromLTRB(0, 0, bmp.Width, bmp.Height);
  15.             var data = bmp.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);      
  16.             var matrix = makeJaggedArray(bmp.Height,bmp.Width);
  17.  
  18.             for (int row = 0; row < data.Height; row++)
  19.             {
  20.                 var buffer = new int[data.Width];
  21.                 Marshal.Copy((data.Scan0 + row * data.Stride), buffer, 0, buffer.Length);
  22.                 for (int col = 0; col < data.Width; col++)
  23.                 {
  24.                     matrix[row][col] = buffer[col];
  25.                 }
  26.             }
  27.             bmp.UnlockBits(data);
  28.             return matrix;      
  29.         }
  30.  
  31.         private Bitmap MakeBitmapWithMatrix(int[][] matrix)
  32.         {
  33.             var myBitmap = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height);
  34.             var rect = new Rectangle(0, 0, myBitmap.Width, myBitmap.Height);
  35.             var data = myBitmap.LockBits(rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
  36.  
  37.             for (int row = 0; row < data.Height; row++)
  38.             {
  39.                 Marshal.Copy(matrix[row], 0, (data.Scan0 + row * data.Stride), matrix[row].Length);
  40.             }
  41.             myBitmap.UnlockBits(data);
  42.             return myBitmap;
  43.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement