C# C语言中的屏幕共享#

C# C语言中的屏幕共享#,c#,screenshot,image-compression,screensharing,C#,Screenshot,Image Compression,Screensharing,我想用C#做一个简单的屏幕共享软件,我读了很多关于它的代码和想法,真的很困惑。 到目前为止,我的想法是截图(30fps),压缩它们,并将它们发送到服务器上——首先我想知道这是否是个好主意。 第二件事是,我尝试了一些我在互联网上找到的代码部分,但效果不好,我需要屏幕截图方面的帮助(处理位图和其他内容的简单代码,质量不必那么好,需要更多关注效率——我读到了关于JPG的文章)。 我是一个新的图像业务,所以如果你有压缩的想法,它将是伟大的 我试过一个代码: private void print(Bitm

我想用C#做一个简单的屏幕共享软件,我读了很多关于它的代码和想法,真的很困惑。 到目前为止,我的想法是截图(30fps),压缩它们,并将它们发送到服务器上——首先我想知道这是否是个好主意。 第二件事是,我尝试了一些我在互联网上找到的代码部分,但效果不好,我需要屏幕截图方面的帮助(处理位图和其他内容的简单代码,质量不必那么好,需要更多关注效率——我读到了关于JPG的文章)。 我是一个新的图像业务,所以如果你有压缩的想法,它将是伟大的

我试过一个代码:

private void print(Bitmap BM, PaintEventArgs e)
    {
        Graphics graphicsObj = e.Graphics; //Get graphics from the event
        graphicsObj.DrawImage(BM, 0, 0); // or "e.Graphics.DrawImage(bitmap, 60, 10);"
        graphicsObj.Dispose();
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Rectangle totalSize = Rectangle.Empty;

        foreach (Screen s in Screen.AllScreens)
            totalSize = Rectangle.Union(totalSize, s.Bounds);

        Bitmap screenShotBMP = new Bitmap(totalSize.Width, totalSize.Height, PixelFormat.
            Format32bppArgb);

        Graphics screenShotGraphics = Graphics.FromImage(screenShotBMP);

        screenShotGraphics.CopyFromScreen(totalSize.X, totalSize.Y, 0, 0, totalSize.Size,
            CopyPixelOperation.SourceCopy);

        screenShotGraphics.Dispose();
        print(screenShotBMP, e);
    }

    public Form1()
    {
        InitializeComponent();
        Paint += new PaintEventHandler(Form1_Paint);
    }
我不确定这是否是最好的方法(这段代码看起来没有希望,我也不确定它是否适合我的需要)。
最后一件事,伙计们,我想把压缩后的图像打包成30个一组来发送,在这种情况下我该怎么办?

更新:我找到了这个jpg编码器,我将使用他:JpegBitmapEncoder类对我来说很好,但我只会得到一个屏幕的截图。还有,为什么你要发送30个一批的截图,你会有1秒的延迟…那么我如何发送图片呢?每秒一帧