2010-12-04 45 views
1

我創建一個簡單的程序,具有顯示3秒,閃屏下面,我主要形式加載啓動畫面。但是,當我的主窗體加載時,它將會加載我所有的控件(我的頁面上有36個按鈕...將它們用於輪盤賭桌)。因此,我的主表單的前1-2秒顯示出來,它正在加載所有這些按鈕,看起來很醜。我如何在我的啓動畫面的3秒內或其他方式下加載此表單?由於如何顯示主窗體控件後已加載


for (i = 0; i < 36; i++) 
{ int j, k; j = i % 3; k = i/3; 
    button[i] = new Label(); 
    button[i].Location = new Point(80 + (41*j), 64 + (20*k)); 
    button[i].Cursor = Cursors.Hand; 
    etc etc. 
} 
+0

WinForms or Web? – adopilot 2010-12-04 16:31:14

+0

我正在使用一個基本的WinForm – Nick 2010-12-04 16:39:41

回答

3

它不加載它們,你看到的只是畫的按鈕所需要的時間。您可以輕鬆地仔細檢查:最小化表單並將其恢復。這需要2秒鐘,而不是高端,也許它只是感覺這樣,或者你的硬件非常不足。擁有36個按鈕確實使您能夠觀察繪畫,特別是當他們有圖像時。請確保您放在按鈕上的圖像尺寸合適,不得不重新調整尺寸以適應按鈕的價格昂貴,並且會花費在繪畫時間中。

啓動畫面不會解決這個問題,除非您在啓用了Aero的Vista或Win7上運行此操作。您可以使用不透明度屬性稍微隱藏它,使用計時器從0增加到0.99。一個真正的解決方法是不使用按鈕,而只是在窗體的OnPaint()方法覆蓋中繪製輪盤表。然而,您必須添加代碼才能進行鼠標點擊測試。

A Q & D修復是對整個窗體進行雙緩衝,渲染成離屏位圖,然後將結果傳送到屏幕上。這不會加速繪畫,它只是不明顯。將此代碼粘貼到您的表單類中,以使用Windows XP中對此的內置支持:

protected override CreateParams CreateParams { 
    get { 
    CreateParams cp = base.CreateParams; 
    cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED 
    return cp; 
    } 
} 
相關問題