gpt4 book ai didi

c# - 叠加两个或多个位图以在图片框中显示 (C#)

转载 作者:太空狗 更新时间:2023-10-29 21:23:18 31 4
gpt4 key购买 nike

在我的 C# 程序中,我有一个图片框,我想在其中显示视频流(连续帧)。我收到原始数据,然后将其转换为位图或图像。我可以一次毫无问题地显示一张图像(以重现视频流)。

现在我的问题是我想合并 2 个或更多具有相同大小和 alpha 值 (ARGB) 的位图(如图层)并将其显示在图片框上

我已经阅读了很多关于 SO 的网站和帖子,但是很多网站和帖子都使用了 Graphics 类,我只是无法在我的应用程序上绘制它(很可能是因为我是 C# 的新手!并且已经设置了我的程序,所以我不想更改结构)。

我需要(知道):

  1. 如何用 alpha 值叠加两个或多个位图;
  2. 请不要进行像素操作,无法承受性能成本。

提前致谢!

注意: 我认为不应将此问题标记(或关闭)为重复问题,因为我在 SO 中发现的所有内容都是通过像素操作或通过 Graphics 类完成的。 (但我可能错了!)

编辑:可能的解决方法(不是问题的解决方案)
A PictureBox Problem ,第 4 个答案(来自用户 comecme)告诉我有 2 个图片框,一个在另一个之上。我必须做的唯一(额外)的事情是:

private void Form1_Load(object sender, EventArgs e)
{
pictureBox2.Parent = pictureBox1;
}

其中 pictureBox2 将是最上面的那个。

我不会将此视为该问题的答案,因为我认为这是一种解决方法(特别是因为拥有超过 10 个图片框似乎并不理想!大声笑)。这就是为什么我会保留这个问题,等待对我的问题的真实 回答。

编辑:已解决!检查我的答案。

最佳答案

这是我的问题的真实答案。
1) 使用List<Bitmap>存储您要混合的所有图像;
2) 创建一个新的Bitmap来保存最终的图像;
3) 在最终图像的 graphics 之上绘制每个图像使用 using声明。

代码:

List<Bitmap> images = new List<Bitmap>();  
Bitmap finalImage = new Bitmap(640, 480);

...

//For each layer, I transform the data into a Bitmap (doesn't matter what kind of
//data, in this question) and add it to the images list
for (int i = 0; i < nLayers; ++i)
{
Bitmap bitmap = new Bitmap(layerBitmapData[i]));
images.Add(bitmap);
}

using (Graphics g = Graphics.FromImage(finalImage))
{
//set background color
g.Clear(Color.Black);

//go through each image and draw it on the final image (Notice the offset; since I want to overlay the images i won't have any offset between the images in the finalImage)
int offset = 0;
foreach (Bitmap image in images)
{
g.DrawImage(image, new Rectangle(offset, 0, image.Width, image.Height));
}
}
//Draw the final image in the pictureBox
this.layersBox.Image = finalImage;
//In my case I clear the List because i run this in a cycle and the number of layers is not fixed
images.Clear();

致谢于 this tech.pro webpage 中的 Brandon Cannaday .

关于c# - 叠加两个或多个位图以在图片框中显示 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14397404/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com