Я не знаю о 2.0, но в 4.0 это, вероятно, будет что-то вроде
public void VisitPixels(Image image, Action<int,int,Pixel> func){
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
func(x,y,image.GetPixel(x,y));
}
}
}
Если вы хотите получить возвращаемое значение, оно может стать немного сложнее, но вы можете думать о нем каклибо Map
, либо Fold
Карта
Псевдо:
public T[][] MapPixels<T>(Image image, Func<int,int,Pixel,T> func){
var ret = new T[image.Width][image.Height];
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
ret[x][y] = func(x,y,image.GetPixel(x,y)));
}
}
return ret;
}
Сгиб
public T FoldLPixels<T>(Image image, Func<T,Pixel,T> func, T acc){
var ret = acc;
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
ret = func(ret,image.GetPixel(x,y));
}
}
return ret;
}
Вы можете, например, получить среднюю Яркость, например:
var avgBright = FoldLPixels(image,
(a,b)=>a+b.GetBrightness(),
0) / (image.Width+image.Height);