我有一個組件,一個繼承面板,其中我重寫OnPaint事件繪製一個500點的圖形。由於我需要在圖表上做一些選擇,因此閃爍。我發現這個DoubleBuffered屬性,但是當我將它設置爲True時,在面板構造函數中,圖形消失。我調試它,我發現繪圖方法仍然執行,但面板上沒有任何東西。 有誰知道爲什麼會發生這種情況?面板DoubleBuffered屬性停止繪圖,是不可見的
這是.NET 3.5 - C#。 WinForms應用程序
try
{
Graphics g = e.Graphics;
//Draw _graphArea:
g.DrawRectangle(Pens.Black, _graphArea);
_drawingObjectList.DrawGraph(g, _mainLinePen, _diffLinePen, _dotPen, _dotBrush, _notSelectedBrush, _selectedBrush);
DrawSelectionRectangle(g);
g.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
面板後裔構造:
this.BackColor = Color.White;
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();
我認爲這是.Net?語言? – rene 2011-03-01 13:32:15
@rene是的,它是。抱歉。 C#。這是現在的問題。 – elector 2011-03-01 13:55:12
你能告訴我們你的繪圖代碼嗎? – FreeAsInBeer 2011-03-01 13:59:58