2013-06-04 75 views
4

我正嘗試創建基於flipview的windowsRT應用程序,其中flipview(我的應用程序的術語中的一個頁面)的每個項目都是VSIS支持的圖像。根據VSIS的設計,每當任何圖像進入可見區域時,VSIS的updatesneeded函數就會被調用併爲我繪製位圖。在非可見區域上繪製VSIS圖像位圖

作爲增強功能,我想緩存下一頁的圖像/位圖,如果用戶單擊下一個按鈕,將顯示下一頁。爲了達到這個目的,我在一個不同的線程中調用了相應的VSIS的invalidate函數,希望這會在後臺渲染位圖(通過調用UpdatesNeeded),當用戶點擊下一個按鈕時,圖像已經準備好被顯示。

但是,當VSIS不在可見區域並且我的緩存設計失敗時,似乎invalidate函數不會調用updatesneeded回調。有沒有相同的方法/解決方法?我事先知道頁面/圖像的尺寸,因此獲取vsis的更新信息不成問題。此外,如果已經渲染位圖,我的updatesneeded函數將會返回,注意當圖像進入可見區域並調用updatesneeded時,VSIS不需要再次重繪整個圖像。

回答

0

我找到了解決方案。實際上,我認爲即使當我的圖像不在可見區域時,也會調用UpdatesNeeded函數。相反,我已經實現了我自己的功能PreCacheImage。被調用時,該函數會創建圖像的ID2D1Bitmap並將其存儲。當調用UpdatesNeeded函數(當圖像變得可見時),我檢查我的位圖是否有效,如果是,我只是將它粘貼到屏幕上。