在Picturebox Control中使用Diff Image(Deltas)

时间:2012-07-10 15:38:03

标签: c# winforms picturebox

我创建了一个图片框,并在第一次请求到我的服务器时检索完整的桌面并显示它。在随后的每一个请求中,我只会得到差异化的图像,除了有变化之外,它在任何地方都是透明的。

如何将这两个图像“叠加”在一起?或者将它们组合在我的图片框中?

谢谢!

2 个答案:

答案 0 :(得分:1)

http://dandar3.blogspot.com/2011/01/picturebox-with-transparent-overlay.html

此链接显示如何使一个图片框透明并在其上叠加另一个图片框。

答案 1 :(得分:1)

试试这个:

for (var x = 0; x < sourceBitmap.Width; x++)
{
    for (var y = 0; y < sourceBitmap.Height; y++)
    {
        var pixelColor = sourceBitmap.GetPixel(x, y);

        // copy all non-transparent pixels
        if (pixelColor.A != Byte.MaxValue) 
        {
            destinationBitmap.SetPixel(x, y, pixelColor);
        }
    }
}

我假设sourceBitmap和destinationBitmap都是System.Drawing.Bitmap对象。源位图将是你在图片框中显示的那个,但是不要使用pictureBox.Image属性返回的那个,用Clone()方法创建一个副本然后进行交换,否则你会得到例外。

如果此方法太慢,您可以尝试使用直接内存访问来操作位图数据,使用Bitmap对象上的LockBits和UnlockBits方法。