【发布时间】:2012-10-01 09:12:10
【问题描述】:
我的方法的问题是,在调整表单大小时,图像、文本或绘制的线条可能会滞后 0.2 秒。因此,如果您需要右下角的图像,则在调整大小后需要 0.2 秒才能到位。此外,如果您进行大量调整大小,它开始滞后到 1-2FPS,而表单在大屏幕上展开。示例代码如下所示(VB.NET):
Public Class Form1
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim icon As Icon = SystemIcons.Exclamation
Dim imageWidth As Integer = icon.Width
Dim imageHeight As Integer = icon.Height
e.Graphics.DrawIcon(icon, Me.ClientRectangle.Right - imageWidth,
Me.ClientRectangle.Bottom - imageHeight)
End Sub
Private Sub Form1_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
Me.Invalidate()
End Sub
End Class
有什么办法可以让它更流畅吗?
【问题讨论】:
-
我没有看到您发布的代码有任何明显的延迟。
-
@JohnKoerner:奇怪的是,我在运行相同 Windows 7 的慢 5 倍的机器上进行了尝试,但也没有发现明显的延迟。所以目前只有我的 i7 给我带来了问题。如果我发现任何模式,我会做更多的测试并更新问题。
-
尝试用
Refresh()替换Invalidate()。 -
@ja72: 刚试过,在当前上下文中似乎 Invalidate = Refresh。