2010-08-29 104 views
4

用於顯示圖像列表的winform控件當前使用flowlayoutpanel和一組pictureboxes來實現。但即使在縮略圖比例(64x64)的時候,當我們開始接近1000張圖像時,我們也會遇到OutOfMemory異常 - 我們的實際問題在於縮略圖生成部分和Image對象的創建。如何處理C#應用程序中的1000多個圖像?

我還沒有找到任何策略從網絡上的現有圖像查看示例有關大量的圖像,所以任何人有任何鏈接或策略來解決這個顯示1000 +圖像列表的問題?

作爲一個起點,我們真的只需要這些圖像對象,當縮略圖的圖片框在視圖中。那麼我們只會創建10個圖像對象,但是除了加載和銷燬圖像對象之外,還有更聰明的方法嗎?

感謝, 愛德華

回答

5

您應該一次只顯示一個畫面圖像。

當用戶拖動滾動條時,銷燬這些圖像並加載新圖像。

+2

...並且讓控件在單獨的線程中加載圖像,以便在用戶滾動時不會造成拖拽。 – 2010-08-29 23:37:59

+0

我如何知道一個picturebox?在Scrollable面板上有ScrollIntoView函數 - 什麼是等效事件? – 2010-08-31 11:29:00

0

WPF處理這個很好的方法。如果您打開了虛擬化,則列表框將只創建對屏幕可見的控件。

就你而言,請繼續參考列表中的圖像。放置一個pictureBox,並基於滾動條,改變pictureBox上的圖像。

+0

WPF不會幫助;圖像本身仍將被加載。 – SLaks 2010-08-30 00:11:14

+0

沒有。使用虛擬化和延遲加載對象將確保圖像不會被加載到集合中。 WPF和虛擬化發生了很多事情,我認爲構建表示框架可以幫助解決這個問題。 – abhishek 2010-08-30 08:15:14

相關問題