C# 如何合并两个位图



我正在尝试找到一种在 Paint 事件中将两个位图合并在一起的方法。我的代码如下所示:

private void GraphicsForm_Paint(object sender, PaintEventArgs e)
{
    try
    {
        Bitmap1 = new Bitmap(1366, 768);
        Bitmap2 = new Bitmap(1366, 768);
        OutputBitmap = ...//and this is where I've stuck :(
    }
    catch
    {
    }
}

这个问题更成问题,因为绘制到 Bitmap2 上的图形对象在另一个类中。我还希望将 Bitmap2 绘制在 OutputBitmap 上的 Bitmap1 后面。

谁能给我一个好的建议,如何将这两个位图(彼此后面,但是)合并到一个输出位图上?

谢谢:)

假设您的位图具有透明区域,请尝试创建一个位图,并按所需顺序将其他两个位图绘制到其中:

private Bitmap MergedBitmaps(Bitmap bmp1, Bitmap bmp2) {
  Bitmap result = new Bitmap(Math.Max(bmp1.Width, bmp2.Width),
                             Math.Max(bmp1.Height, bmp2.Height));
  using (Graphics g = Graphics.FromImage(result)) {
    g.DrawImage(bmp2, Point.Empty);
    g.DrawImage(bmp1, Point.Empty);
  }
  return result;
}
    public static Bitmap Combine(params Bitmap[] sources)
    {
        List<int> imageHeights = new List<int>();
        List<int> imageWidths = new List<int>();
        foreach (Bitmap img in sources)
        {
            imageHeights.Add(img.Height);
            imageWidths.Add(img.Width);
        }
        Bitmap result = new Bitmap(imageWidths.Max(), imageHeights.Max());
        using (Graphics g = Graphics.FromImage(result))
        {
            foreach (Bitmap img in sources)
                g.DrawImage(img, Point.Empty);
        }
        return result;
    }

享受。。。

相关内容

  • 没有找到相关文章

最新更新