我寫了下面這個簡單的程序,它每隔100毫秒在屏幕上繪製一行(由timer1觸發)。我注意到圖畫閃爍了一點(也就是說,窗口並不總是完全藍色,但有些灰色照耀着)。所以我的想法是使用雙緩衝。但是當我這樣做時,情況就更糟了。現在屏幕幾乎總是灰色的,並且偶爾會出現藍色(由timer2演示,每2000毫秒切換DoubleBuffered
屬性)。使用C#進行雙緩衝具有負面影響
對此有何解釋?
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e) {
Graphics g = CreateGraphics();
Pen pen = new Pen(Color.Blue, 1.0f);
Random rnd = new Random();
for (int i = 0; i < Height; i++)
g.DrawLine(pen, 0, i, Width, i);
}
// every 100 ms
private void timer1_Tick(object sender, EventArgs e) {
Invalidate();
}
// every 2000 ms
private void timer2_Tick(object sender, EventArgs e) {
DoubleBuffered = !DoubleBuffered;
this.Text = DoubleBuffered ? "yes" : "no";
}
}
}
是的,你是對的。那是我答案的第二部分。 – 2010-04-02 11:49:31
它很簡單,它的工作原理。謝謝。 – 2010-04-02 12:06:50