private static Bitmap[] GenerateBitmaps(List <ChunkBase> chunkList, int pageCount) { var bitmaps = new Bitmap[pageCount]; if (chunkList.Count == 0) { return(bitmaps); } //var sizes = new SizeF[bitmaps.Length]; var widths = new float[bitmaps.Length]; var heights = new float[bitmaps.Length]; for (int i = 0; i < chunkList.Count; i++) { ChunkBase chunk = chunkList[i]; int index = chunk.PageIndex; if (index >= bitmaps.Length) // this happens when chunks overflows of max pages. { continue; } float newWidth = chunk.LeftTop.X + chunk.Size.Width; float newHeight = chunk.LeftTop.Y + chunk.Size.Height; if (widths[index] < newWidth) { widths[index] = newWidth; } if (heights[index] < newHeight) { heights[index] = newHeight; } } float maxWidth = 0.0f, maxHeight = 0.0f; for (int i = 0; i < bitmaps.Length; i++) { if (maxWidth < widths[i]) { maxWidth = widths[i]; } if (maxHeight < heights[i]) { maxHeight = heights[i]; } } int w = (int)Math.Ceiling(maxWidth); int h = (int)Math.Ceiling(maxHeight); for (int i = 0; i < bitmaps.Length; i++) { bitmaps[i] = new Bitmap(w, h); } return(bitmaps); }
private static Bitmap[] GenerateBitmaps(List <ChunkBase> chunkList, PagesContext context) { List <Page> list = context.PageList; var bitmaps = new Bitmap[list.Count]; if (chunkList.Count == 0) { return(bitmaps); } var sizes = new SizeF[list.Count]; for (int i = 0; i < chunkList.Count; i++) { ChunkBase chunk = chunkList[i]; if (chunk.PageIndex >= list.Count) // this happens when chunks overflows of max pages. { break; } int index = chunk.PageIndex; sizes[index].Width += chunk.Size.Width; sizes[index].Height = Math.Max(sizes[index].Height, chunk.Size.Height); } float maxWidth = 0.0f, maxHeight = 0.0f; foreach (var size in sizes) { if (maxWidth < size.Width) { maxWidth = size.Width; } if (maxHeight < size.Height) { maxHeight = size.Height; } } for (int i = 0; i < bitmaps.Length; i++) { var bmp = new Bitmap((int)maxWidth, (int)maxHeight); bitmaps[i] = bmp; } return(bitmaps); }