处理远程桌面的位图/矩形数据

时间:2014-01-17 02:37:55

标签: c# bitmap rdp rectangles

我有基本的观看基础工作,但我现在想要实现更复杂的系统。我有一个方法返回一个Bitmap,其中包含一个子集,该子集是包含屏幕所有更改像素的最小矩形区域。因此,我现在想要传递更新的像素Bitmap 其矩形边界数据,而不是简单地使用BinaryFormatter通过NetworkStream序列化完整的桌面快照,然后我想传递更新的像素Bitmap 可以有效地将更新的像素粘贴在第一个桌面快照(在开始会话时发送)的正确位置。

对于这种类型的协议,一起发送/接收Bitmap和Rectangle的最佳方法是什么?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我在发布此问题后不久发现BinaryFormatter的序列化/反序列化具有System.Runtime.Remoting.Messaging.Headers[]参数。我能够像这样有效地处理数据:

<强>客户端:

Rectangle bounds = Rectangle.Empty;
Bitmap image = Utils.Screen(ref bounds);
BinaryFormatter bFormat = new BinaryFormatter();
Header[] headers = { new Header("bounds", bounds) };
bFormat.Serialize(stream, image, headers);

服务器

BinaryFormatter bFormat = new BinaryFormatter();
Rectangle bounds = new Rectangle();
Bitmap inImage = bFormat.Deserialize
(
    stream, 
    headers => 
    {
        foreach(var header in headers)
        {
            if(header.Name == "bounds")
                bounds = (Rectangle)header.Value;
        }
        return null;
    }
) as Bitmap;