在我的情況下,我有2D ArrayList充滿了繪製水平線,垂直線和填充矩形時使用數據的對象。在不同的情況下,對象的數量是不同的,並且圖像具有不同數量的畫線和矩形。但是圖像有時需要重新繪製。重繪的東西越多,屏幕上的閃光就越強烈(我希望你能弄清楚我的意思是「閃光」)。C#,WinForms繪製存儲在ArrayList中的數據。這是個好主意嗎?
我已經嘗試雙緩衝,但我不認爲我做它的右閃僅改變的類型......但是,這不是當前的情況。
我已閱讀,它很容易從任何地方ArrayList中添加和刪除元素(無論類型),但對它們的訪問是很難的。我還讀到List更好地表現ArrayList(這是否意味着該程序將需要更少的計算機資源?),但是從最後添加和刪除元素只是很容易的。但我不確定Array的性能是否最快。這讓我覺得如果我用Array或List更改ArrayList,閃爍可能變得更弱。
這不會是在我的情況的問題,因爲所有我存儲在ArrayList中的元素構成同一類。
我的問題是:如果我用數組或列表替換ArrayList,我可以削弱閃爍嗎?
在某些情況下,對象的數量不只是2×2或4×3,但10×10和更大量...(N×M的有了我的意思是ň陣列,M個元素。)和矩形需要吸引更多的時間。 「減弱閃爍」我並不是指「停止閃爍」,我的意思是如何更快地繪製圖形。是的,我知道我必須在雙緩衝上工作才能解決問題。但如果讓繪圖更快(之後雙緩衝將變得更快),應用程序也將變得更快。這是屬於「必須做」列表的內容之一。 – AlexSavAlexandrov
我總是支持編寫更好的優化代碼,性能改變是否明顯。但在你的情況下,在1000x1000的迭代中,你將獲得大約10-50毫秒。想想畫一個1000000個矩形需要多長時間,而不是10-50毫秒。 (請參閱此處:http://www.dotnetperls.com/unboxing)。這些int類型的結果如此,我認爲它可能需要多達5倍以上的其他類型,並減少迭代100倍。所以,我們都知道繪製1000000個矩形,類似的對象需要花費很長時間。恕我直言,性能增益不會高於%0.1。 –