2012-10-31 31 views
5

我正在C#Windows窗體中創建遊戲的地圖編輯器。我需要的是一個網格,它必須存儲幾千張圖像。在C#窗體中繪製大量圖像

我的第一個方法是創建一個Panel控件,然後添加多個PictureBoxes它。不幸的是,2000年的圖像花了大約3秒鐘來畫。

然後,我決定嘗試創建Rectangles並希望能取得更好的成績借鑑他們ImagesPanelOnPaint()方法,但它仍然很慢。

是否有Windows窗體呈現這麼多的圖像的任何更好的,有效的方法?

先感謝您的任何建議。

+0

是所有那些2000倍的圖像,同時在屏幕上看到? –

+0

是的,他們是。而且他們需要渲染得非常快,以便從地圖上的一個地方到另一個地方不需要花費3秒鐘。 –

+0

@Mosquito - 你想要的是不現實的。爲什麼不能生成圖像,然後確定需要顯示哪些圖像?我會爭辯說''3秒'就像你將要得到的那樣快。 –

回答

3

你幹得使用Paint事件,但...

由於圖像的加載的一部分,緩存在那裏你合併16個圖像轉換成一個縮小版本,這是隻有125的圖像,當你縮小一定比例,切換到使用預渲染縮小版本。

你可以做,因爲往往你喜歡與任何人,在時間上保持屏幕儘可能少的圖像儘可能的想法多個縮放級別。所以你可以再把它除以4。

我這樣做對於具有由65536個影像(256×256)的地圖項目。緩存也寫入磁盤,因此每次縮小時都會看到相同數量的圖像。在我的editior中,我只能查看16個圖像,即使我正在查看整個地圖。

通過了解用戶可用選項(例如平移和縮放),您可以進一步改進此功能,從而爲用戶提供可能查看的有限圖像子集,以便您可以預加載這些圖像以提高性能。

你會開始增加負載的時間,但我敢打賭,你已經有一個顯著加載時間拉2000倍的圖像從磁盤

+0

非常感謝您的回答。 :-) –

+0

@Mosquito,我很高興這很有幫助! –