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