『QQ:1353814576』

gdi+ Graphics 实现图片拼接排版合并


gdi+ 实现图片拼接排版合并

先添加System.Drawing.dll引用

using System.Drawing;
using System.Drawing.Drawing2D;

c#实现拼图代码

///////
///图像宫格按行列拼接 合并 组合 
///ImageBitmapQueue 图像队列
///CellColumns 列数
///CellRows 行数
//////
public static Bitmap SplicingMatrix(this List <Bitmap> ImageBitmapQueue, int CellColumns, int CellRows) {  
 
    int CellWidth = (int)(ImageBitmapQueue.Max(e =>e.Width));//每格最大宽度  
    int CellHeight = (int)(ImageBitmapQueue.Max(e =>e.Height));//每个最大高度  
  
    Bitmap bitmap = new Bitmap(CellColumns * CellWidth, CellRows * 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.Black);  
    ///Graphics   
    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 / CellColumns; //行数  
        int column = i - (row * CellColumns);  
  
        g.DrawImage(MatrixBitmap, new Point() {  
            X = column * CellWidth,  
            Y = row * CellHeight  
        });  
    }  
    g.Dispose();  
    return bitmap;  
}