使用 Graphics 将n张图像合并成一张宫格图
public class FilmFormat { public int cols { get; set; }//列数 public int rows { get; set; }//行数 } ///多图像按指定行列合并 private Bitmap SplicingMatrix(ListImageBitmapQueue, FilmFormat Format) { int CellWidth = (int)(ImageBitmapQueue.Max(e => e.Width)); int CellHeight = (int)(ImageBitmapQueue.Max(e => e.Height)); Bitmap bitmap = new Bitmap(Format.cols * CellWidth, Format.rows * CellHeight); Graphics g = Graphics.FromImage(bitmap); g.SmoothingMode = SmoothingMode.HighSpeed; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.Clear(Color.Transparent); ///Graphics 布局区块 50x50x5 for (int i = 0; i < ImageBitmapQueue.Count; i++) { Bitmap MatrixBitmap = ImageBitmapQueue[i]; MatrixBitmap = new Bitmap(MatrixBitmap, new Size() { Width = MatrixBitmap.Width, Height = MatrixBitmap.Height }); int row = i / Format.cols;//行数 int column = i - (row * Format.cols); g.DrawImage(MatrixBitmap, new Point() { X = column * CellWidth, Y = row * CellHeight }); } g.Dispose(); return bitmap; }
GDI+ 多图像按指定行列实现图像合并
上效果图
