0

I create a picture box and on the first request to my server retrieve the full desktop and display it. On every subsequent request, I'm only getting the diff'ed image which is transparent everywhere except where there are changes.

How can I "overlay" these two images together? Or otherwise combine them in my picture box?

Thank you!

4

1 回答 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 方法。

于 2012-07-10T16:27:36.677 回答