2010-04-17 211 views
0

我正在使用vb.net,其中我已將背景圖像放到每個窗體中。圖像大小爲1024X768。當我打開表單時,它花費的時間太多打開。和屏幕是fluctuate.so你能告訴我如何刪除此類型的問題,花費太多時間在vb.net中加載應用程序

回覆我很快 感謝 薩米爾

+0

聽起來像這個問題可能是你的電腦。嘗試在另一臺計算機上運行該應用程序,看看它是否仍然加載緩慢。 – shady 2010-04-17 12:15:11

+0

每種形式都使用相同的背景圖像,還是每種形式都有其獨特的圖像? – MusiGenesis 2010-04-17 12:26:15

+0

我在其他電腦也嘗試過。它花費太多的加載時間,並且只有一種形式的圖像。 – Samir 2010-04-17 12:29:44

回答

1

我假設(希望)你不設定每個BackgroundImage財產因爲這意味着您的可執行文件的大小至少爲表單總數的3 MB。

因此,您可能在窗體的Load事件或其構造函數中具有代碼以從文件或嵌入式資源加載BackgroundImage。這意味着您每次創建並顯示錶單時都會加載一個3 MB圖像文件。

有不同的方式來做這樣的事情,但是無論你做什麼,你都希望確保只在程序的生命週期中將這個文件加載到Bitmap中,然後在每個表單中重新使用它。一個簡單的方法,使這是修改每個窗體構造函數(除了主窗體)採取Bitmap作爲參數,並將其設置爲窗體的背景圖片:

public SomeForm(Bitmap backgroundImage) 
{ 
    this.BackgroundImage = backgroundImage; 
} 

在主窗體的Load事件,你會創建位圖,隨時隨地加載(與你的一個大的圖片),並將其設置爲主要形式的背景圖片:

this.BackgroundImage = Bitmap.FromFile('yadda.bmp'); 

之後,當您創建和展現另一種形式,你做這樣的:

SomeForm sform = new SomeForm(this.BackgroundImage); 
sform.Show(); 

這種方法可以確保您的程序只在您的主窗體加載時纔將該文件加載到內存中。你看到的延遲的一部分是由於渲染圖像所花費的時間(而不是從磁盤加載所花費的時間),所以這可能無法解決所有問題。我可以建議您的應用程序中沒有任何形式的背景圖像嗎?

相關問題