关于截屏代码优化的请教
以下有两段我的截屏代码,请教以下代码还能再做那些的优化使得截屏速度更快.
我知道我的测试结果是跟电脑的配置有关的,但我还是希望能在我这配置不怎么高的电脑里能够取得更快的执行速度.
代码一:
Dim Tim As New Stopwatch
Tim.Start()
For i As Integer = 1 To 50
Dim g As Graphics
Dim bmp As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
g = Graphics.FromImage(bmp)
g.CopyFromScreen(0, 0, 0, 0, New Size(bmp.Width, bmp.Height))
g.Dispose()
Dim Bytes() As Byte
Dim p As New Imaging.EncoderParameter(Imaging.Encoder.Quality, 20)
Dim ps As New Imaging.EncoderParameters(1)
ps.Param(0) = p
Using BmpStream As MemoryStream = New MemoryStream
bmp.Save(BmpStream, GetCodecInfo("image/jpeg"), ps)
Bytes = BmpStream.ToArray
End Using
Next
Tim.Stop()
Add("截图完毕,总用时:" & Tim.ElapsedMilliseconds & " 毫秒 平均: " & Tim.ElapsedMilliseconds \ 50)
这代码50次截屏的平均值是380左右.
代码二:
Dim Tim As New Stopwatch
Tim.Start()
For i As Integer = 1 To 50
Dim hDC, hMDC As Integer
Dim hBMP, hBMPOld As Integer
Dim sw, sh As Integer
hDC = GetDC(0)
hMDC = CreateCompatibleDC(hDC)
sw = Screen.PrimaryScreen.Bounds.Width
sh = Screen.PrimaryScreen.Bounds.Height
hBMP = CreateCompatibleBitmap(hDC, sw, sh)
hBMPOld = SelectObject(hMDC, hBMP)
BitBlt(hMDC, 0, 0, sw, sh, hDC, 0, 0, SRCCOPY)
hBMP = SelectObject(hMDC, hBMPOld)
Dim bmp As New Bitmap(Image.FromHbitmap(New IntPtr(hBMP)))
Dim ps As EncoderParameters
ps = New EncoderParameters(1)
Dim p As EncoderParameter
p = New EncoderParameter(Encoder.Quality, 30)
ps.Param(0) = p
Dim ms As New MemoryStream
bmp.Save(ms, GetCodecInfo("image/jpeg"), ps)
Dim Bytes() As Byte = ms.ToArray
DeleteDC(hDC)
DeleteDC(hMDC)
DeleteObject(hBMP)
Next
Tim.Stop()
Add("截图完毕,总用时:" & Tim.ElapsedMilliseconds & " 毫秒 平均: " & Tim.ElapsedMilliseconds \ 50)
代码二50次截屏的平均值是420毫秒左右.
请问以上二段代码还能否再提高截屏速度?????
[解决办法]
如需要阅读该回复,请登录或注册CSDN!