Exemple #1
0
        public static unsafe MatrixFrame.Pixel[,] BitmapToPixelArray(Bitmap bitmap)
        {
            BitmapData imageData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            MatrixFrame.Pixel[,] frame = new MatrixFrame.Pixel[bitmap.Width, bitmap.Height];

            byte *scan0  = (byte *)imageData.Scan0.ToPointer();
            int   stride = imageData.Stride;
            byte *row;

            for (int y = 0; y < imageData.Height; y++)
            {
                row = scan0 + (y * stride);
                for (int x = 0; x < imageData.Width; x++)
                {
                    int index = x * 3;
                    frame[x, y].R = row[index + 2];
                    frame[x, y].G = row[index + 1];
                    frame[x, y].B = row[index];
                }
            }
            bitmap.UnlockBits(imageData);
            bitmap.Dispose();
            return(frame);
        }
Exemple #2
0
 private void SA_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs <System.Windows.Media.Color?> e)
 {
     if (frame != null)
     {
         MatrixFrame.Pixel color1 = new MatrixFrame.Pixel(SAColor1.SelectedColor.Value.R, SAColor1.SelectedColor.Value.G, SAColor1.SelectedColor.Value.B);
         MatrixFrame.Pixel color2 = new MatrixFrame.Pixel(SAColor2.SelectedColor.Value.R, SAColor2.SelectedColor.Value.G, SAColor2.SelectedColor.Value.B);
         frame.SetSpectrumGradient(color1, color2);
     }
 }