public static Bitmap GetMultiImage(Bitmap image, Size partsDim, Size SizePartImageInOut, Size SizeToCompare, Func <LogicAndImage <ImageToCompare, PartImage>, Func <Bitmap> > PartImageFunc, IOrderDispatcher <PartImage> parts) { Size partSizeInImage; PartImage[] partImage = PartImage.GetPartImageDim(image, partsDim, out partSizeInImage); Dictionary <PartImage, Func <Bitmap> > BitmapDictionary = new Dictionary <PartImage, Func <Bitmap> >(); List <(LogicAndImage <ImageToCompare, PartImage> part, Func <Bitmap> bitmapFunc)> x = (parts.GetItemWitchOrder(partsDim, partImage).AsParallel().Select(X =>//[pobieranie fragmentów new LogicAndImage <ImageToCompare, PartImage>() { Bitmap = X, Logic = new ImageToCompare((Bitmap)X, SizeToCompare) } ).ToList().AsParallel(). // Dołączenie do fragmentów danych o wektorach Select(X => (X, PartImageFunc(X))).ToList()); //obliczenie najbarddziej podobnych obrazów x.ForEach(X => BitmapDictionary.Add(X.part.Bitmap, X.bitmapFunc)); Bitmap zw = MargeImage(partsDim, SizePartImageInOut, partSizeInImage, partImage, BitmapDictionary); return(zw); }