我有一个在VS2010中运行的VB.net程序。我有一个图片框,其中包含一个“ 4k”监视器上的最大化表单。有一个png被指定为图片框的“背景”图像。
在加载时,我创建一个位图图像列表。我在paint事件中具有逻辑,该逻辑管理要显示哪些位图以及要在何处显示(x / y)。我使用图片框.refresh方法调用paint事件。全部都可以。
但是,我发现.refresh事件大约需要200毫秒(i7处理器和优质的图形卡)。但是花在绘制事件上的时间只有几毫秒。是什么在阻碍.refresh进程,并且有什么办法可以加快速度?
请注意,我在绘画事件中使用了“ e As PaintEventArgs”。
在此处更新...。我已修改绘画事件,使其不包含任何内容:
它只是退出而没有任何更新。但是我仍然有很长的刷新时间。这是我的测试代码:
Sub TestRefreshTime()
Dim t1 As Int64
Dim t2 As Int64
' measure the refresh time
QueryPerformanceCounter(t1)
' this updates the main large display
frmbig2.PictureBox1.Refresh()
'
QueryPerformanceCounter(t2)
' note that sysfreq is captured when the program starts using: QueryPerformanceFrequency(sysfreq)
Debug.Print("Refresh Time: " & (t2 - t1) / sysfreq * 1000)
结束子
这是典型结果(结果以ms为单位):
刷新时间:167.572723801244
刷新时间:180.885409355798
刷新时间:172.064521290003
刷新时间:176.036501891958
刷新时间:173.701552054892
刷新时间:177.931629891584
关于.refresh为何需要这么长时间(即使图片框没有“更改”)的任何想法吗?