當我將非矩形區域應用於Windows窗體(可以說是橢圓)時,我正面臨一種奇怪的行爲。問題在於,當初始調整大小時,表單似乎會消失片刻(就像該區域爲空)。它看起來像一個輕微的閃爍,而表單後面的桌面內容在秒的幾分之一時間內可見。在第一次調整大小後,此閃爍不再可觀察。將區域應用於窗體時的問題
這可以通過簡單地創建一個Windows窗體項目,並通過使用形式爲邊界矩形爲橢圓的大小(以這種方式將一個橢圓區域的形式,你將能夠因此調整形式複製其邊界不會完全被該地區「吃掉」)。
注意:我正在更新OnResize事件中窗體的區域。
,我使用的外觀下面的方式代碼:
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
GraphicsPath path = new GraphicsPath();
path.AddEllipse(new Rectangle(Point.Empty, this.Size));
this.Region = new Region(path);
}
任何想法可能會導致什麼呢?
快速跟進:
我注意到,當我把同樣的代碼片段在OnSizeChanged事件畫面不再閃爍或似乎很少發生。
謝謝!
即使表單沒有調整大小,Paint事件會被多次觸發,這不會是一個巨大的開銷嗎?我猜想只有在表單大小發生變化時才需要更新區域,而不是每個WM_PAINT消息。 – WorldIntruder 2009-08-19 08:27:13