[英]Drawing a big number of images in C# Windows Forms
我正在為C#Windows Forms中的游戲創建一個地圖編輯器。 我需要的是一個網格,甚至需要存儲幾千個圖像。
我的第一種方法是創建一個Panel
控件,然后添加多個PictureBoxes
。 不幸的是,2000張圖片需要大約3秒鍾才能畫出
然后我決定嘗試在Panel
的OnPaint()
方法中創建Rectangles
並在它們上繪制Images
,希望得到更好的結果,但它仍然很慢。
有沒有更好,更有效的方法在Windows窗體中呈現如此多的圖像?
提前感謝任何建議。
像你一樣使用Paint事件,但......
作為加載圖像的一部分,緩存縮放版本,其中將16個圖像合並為一個,這只有125個圖像,當您縮小某個比例時,切換到使用預渲染的縮小版本。
您可以根據需要隨時進行多個縮放級別,並且可以隨時在屏幕上保留盡可能少的圖像。 所以你可以再把它除以4。
我這樣做是為了一個包含65536張圖像(256 x 256)的地圖的項目。 緩存也寫入磁盤,因此每次縮小時都會看到相同數量的圖像。 在我的編輯中,我只能在任何時候查看16張圖像,即使我正在查看整個地圖。
您可以通過了解用戶可用的選項(例如平移和縮放)來進一步改進這一點,這為您提供了用戶下一步可能查看的有限圖像子集,因此您可以預加載這些圖像以提高性能。
你最初會增加加載時間,但我敢打賭你已經有很長的加載時間從磁盤上拉出2000張圖像
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.