public static IEnumerable <PixelPoint> ForEachPixel(this BitmapData data, Point point, Size size)
 {
     for (int y = point.Y; y < point.Y + size.Height && y < data.Height; y++)
     {
         for (int x = point.X; x < point.X + size.Width && x < data.Width; x++)
         {
             yield return(new PixelPoint(x, y, data.GetColor(x, y)));
         }
     }
 }
 public static IEnumerable <PixelPoint> ForEachPixel(this BitmapData data)
 {
     for (int y = 0; y < data.Height; y++)
     {
         for (int x = 0; x < data.Width; x++)
         {
             yield return(new PixelPoint(x, y, data.GetColor(x, y)));
         }
     }
 }
 public static IEnumerable <PixelPoint> ForEachPixel(this BitmapData data, Rectangle area)
 {
     for (int y = area.Y; y < area.Bottom && y < data.Height; y++)
     {
         for (int x = area.X; x < area.Right && x < data.Width; x++)
         {
             yield return(new PixelPoint(x, y, data.GetColor(x, y)));
         }
     }
 }