tom*_*tom 3 vb.net graphics paint flicker winforms
我试图使球在屏幕上弹跳,这主要是与每次移动时令人讨厌的闪烁分开。
我已经搜索了一段时间,大多数站点都告诉您启用双缓冲,这虽然有所帮助,但仍然闪烁不佳。
有人对如何解决此问题有任何建议吗?
谢谢 :)
我的代码:
Imports System.Drawing
Public Class Form1
Public gr As Graphics
Public XSpeed As Integer = 2
Public YSpeed As Integer = 2
Public ParticleCoord(1) As Integer
Public Blackbrush As New SolidBrush(Color.Black)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
gr = Me.CreateGraphics()
YSpeed = CInt(Math.Ceiling(Rnd() * 10))
XSpeed = CInt(Math.Ceiling(Rnd() * 10))
ParticleCoord = {50, 50}
Timer.Enabled = True
End Sub
Private Sub ParticleMove(ByRef XSpeed, ByRef YSpeed)
If (ParticleCoord(0) < (12 + 1189) And ParticleCoord(0) > 12) And (ParticleCoord(1) < (12 + 449) And ParticleCoord(1) > 12) Then
ParticleCoord = {ParticleCoord(0) + XSpeed, ParticleCoord(1) + YSpeed}
gr.Clear(Color.White)
gr.FillEllipse(Blackbrush, (ParticleCoord(0) + XSpeed), (ParticleCoord(1) + YSpeed), 50, 50)
ElseIf (ParticleCoord(0) < (12 + 1189) And ParticleCoord(0) > 12) Then
YSpeed = -YSpeed
ParticleCoord = {ParticleCoord(0) + XSpeed, ParticleCoord(1) + YSpeed}
gr.Clear(Color.White)
gr.FillEllipse(Blackbrush, (ParticleCoord(0) + XSpeed), (ParticleCoord(1) + YSpeed), 50, 50)
ElseIf (ParticleCoord(1) < (12 + 449) And ParticleCoord(1) > 12) Then
XSpeed = -XSpeed
ParticleCoord = {ParticleCoord(0) + XSpeed, ParticleCoord(1) + YSpeed}
gr.Clear(Color.White)
gr.FillEllipse(Blackbrush, (ParticleCoord(0) + XSpeed), (ParticleCoord(1) + YSpeed), 50, 50)
Else
YSpeed = -YSpeed
XSpeed = -XSpeed
ParticleCoord = {ParticleCoord(0) + XSpeed, ParticleCoord(1) + YSpeed}
End If
End Sub
Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles Timer.Tick
ParticleMove(XSpeed, YSpeed)
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
如注释中所述,您应始终使用-event中的Graphics对象Paint。要调用重绘,请调用Invalidate()控件。千万不能使用Refresh()(不坏)或Application.DoEvents()(非常糟糕)进行重绘。
奖励:Pro-Tip带来非常流畅的绘画体验
摆脱掉OnPaintBackground(),在这里看到我的其他答案。
这样,您将获得良好的渲染性能(对于GDI +),我经常使用它。你可以看到它在这里的一个有趣的项目我做分析的WinForms控制层:WinFormsCT GitHub上。
| 归档时间: |
|
| 查看次数: |
724 次 |
| 最近记录: |