我在无限循环中制作窗口的屏幕截图 它运作良好。 但我希望它可以改进。 当我运行我的项目时,它有一个垃圾延迟从“PictureBox”复制“Myscreen”。
有人有想法吗? 或者你知道其他任何解决方案吗?
我只想不断地获得Screen的BITMAP。(更快..)
以下是屏幕截图功能。
public static Bitmap ScreenCapture_B(System.Windows.Forms.Screen MyScreen)
{
try
{
Rectangle rect = MyScreen.Bounds;
// 2nd screen = Screen.AllScreens[1]
int bitsPerPixel = MyScreen.BitsPerPixel;
PixelFormat pixelFormat = PixelFormat.Format32bppArgb;
if (bitsPerPixel <= 16)
{
pixelFormat = PixelFormat.Format16bppRgb565;
}
if (bitsPerPixel == 24)
{
pixelFormat = PixelFormat.Format24bppRgb;
}
else
{
pixelFormat = PixelFormat.Format24bppRgb;
}
Bitmap bmp = new Bitmap(rect.Width, rect.Height, pixelFormat);
using (Graphics gr = Graphics.FromImage(bmp))
{
// 화면을 그대로 카피해서 Bitmap 메모리에 저장
gr.CopyFromScreen(rect.Left, rect.Top, 0, 0, rect.Size);
}
return bmp;
}
catch(Exception)
{
throw;
}
}
Bellow来源是Thread。
public void ThreadLoop()
{
try
{
//infinite loop
while (true)
{
bm = null;
Screen MyScreen = Screen.PrimaryScreen;
bm = ScreenCapture_B(MyScreen);
setImage(bm, pictureEdit1);
Bitmap btimage = new Bitmap(pictureEdit1.Image);
ProcessImage_new(btimage);
}
}
catch (Exception ex)
{
throw;
}
}