C#如何合并两个位图?

时间:2014-03-04 20:01:17

标签: c# image graphics bitmap merge

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

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的Graphics对象在另一个类中。 我还希望在OutputBitmap上的Bitmap1后面绘制Bitmap2。

任何人都可以给我一个很好的建议,如何将这两个位图合并(在另一个之后,但是)到一个输出位图上?

谢谢:)

1 个答案:

答案 0 :(得分:0)

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

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;
}