Skip to content

Commit e12bb6b

Browse files
committed
Use double buffering
1 parent 8e2b7fc commit e12bb6b

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

WaveViewer/Form_Main.Designer.cs

Lines changed: 1 addition & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

WaveViewer/Form_Main.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ public Form_Main()
1616
{
1717
InitializeComponent();
1818

19+
this.DoubleBuffered = true;
20+
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
21+
this.SetStyle(ControlStyles.UserPaint, true);
22+
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
23+
1924

2025
var argDict = ParseCmdLineArgs();
2126

@@ -50,9 +55,9 @@ public Form_Main()
5055
private Graph m_graph = null;
5156
private Seismograph m_worker = null;
5257

53-
private void panel_wave_Paint(object sender, PaintEventArgs e)
58+
private void Form_Main_Paint(object sender, PaintEventArgs e)
5459
{
55-
var size = this.panel_wave.Size;
60+
var size = this.ClientSize;
5661

5762
if (m_graph == null || m_worker == null)
5863
{
@@ -62,13 +67,20 @@ private void panel_wave_Paint(object sender, PaintEventArgs e)
6267
}
6368
else
6469
{
65-
m_graph.Draw(e.Graphics, size);
70+
using (var bufferG = BufferedGraphicsManager.Current.Allocate(e.Graphics, this.ClientRectangle))
71+
{
72+
var g = bufferG.Graphics;
73+
74+
m_graph.Draw(g, size);
75+
76+
bufferG.Render(e.Graphics);
77+
}
6678
}
6779
}
6880

6981
private void timer_update_Tick(object sender, EventArgs e)
7082
{
71-
this.panel_wave.Invalidate();
83+
this.Invalidate();
7284
}
7385

7486
private void Worker_WhenDataReceived(List<double> waveform)

WaveViewer/Graph.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,15 @@ public void Clear()
7272

7373
public void Draw(Graphics g, Size size)
7474
{
75+
g.Clear(Color.White);
76+
77+
7578
if (m_waveform.Count <= 0)
7679
{
7780
return;
7881
}
7982

8083

81-
g.Clear(Color.White);
82-
83-
8484
int[] copyWaveform = null;
8585

8686
lock (m_lockWaveform)

0 commit comments

Comments
 (0)