簡體   English   中英

生成的用戶控件的圖形緩存

[英]Graphics caching for Generated user controls

這個問題專門針對 .net CF,但它應該適用於任何緩慢的過時系統。

我編寫了一個自定義 ListPanel 類型 object ,其中包含自定義 ListItem 類型對象。 每個 ListItem 包含 0-5 個不同的圖形和 1-4 個不同的文本集(每組文本具有不同的字體或顏色)。 每件商品的尺寸也在 480x14-480x800 之間(WxH)

ListPanel object 有一個類型為Bitmap的緩沖區,它是用於雙緩沖的手機屏幕大小(通常為 480x800)。 每個 ListItem 也有一個 Buffer,它是項的大小(這是因為 ListItem 在創建后很少更改)。 ListPanel 將其 Buffer 的 Graphics object 發送到其所有 ListItem,每個 ListItem 使用它來繪制其 Buffer Bitmap。 在所有可見項都用 Graphics Object 自己繪制之后,面板的 Buffer 被繪制到屏幕上

平均列表包含 10-27 項。

關於這個緩沖區緩存模式,我有幾個問題。
首先,保存這么多緩沖區是否過度殺戮? 在一個包含 26 個對象的列表中,memory 中至少有 28 個位圖,這在 .net CF 上是很大的空間。 如果這太過分了,那么渲染屏幕的更好方法是什么(考慮到最壞的情況 ListItem 將繪制 6 個圖形和 4 組具有不同字體的文本)。

此外,還有一些重復出現的圖形(作為嵌入式資源存儲或在本地復制到 output 目錄並作為文件讀入),我想知道將這些圖像保存在 memory 中是否更好或讀取/關閉它們以每次使用?

最后,(假設上面的項目)我應該什么時候渲染 ListItem 的緩沖區? 我應該在項目的 ctor 中呈現它還是在項目第一次進入顯示器時呈現它? 在 ctor 中渲染 Buffer 會在創建頁面時造成延遲,但在用戶滾動時會更流暢。 首次顯示時渲染可能會導致滾動不流暢,但頁面加載速度更快,並且某些看不到的項目不需要加載到 memory

任何指導都會很棒

我認為你應該看看這個 SO question的接受答案。 例如,適用於您的案例的一個小片段說:“避免在表單的 ctor 中做大量工作 - 為延遲加載或在后台線程中卸載它”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM