1、首先得說明的是這並不是真正的3D,模型被導出為一系列的單個圖片,例如一個3D戶型圖,以某個視角旋轉360°,渲染出一系列連續的單個圖片文件。
2、在Image.MouseMove事件中添加相應代碼,根據move的方向(根據當前鼠標點和前一鼠標點即可判斷出),來更新Image.Source(賦值為上一張or下一張圖片)
3、如果進展順利,那麼你就可以使你的3D模型流暢的旋轉起來。
然而事情的發展往往讓人很不愉快。
於是乎,展開各種網絡搜索。略去其中各種奇葩想法,例如異步加載啦、預加載啦等等亂七八糟的。
1、以空間換時間。使用 List<byte[]>/List<Stream> 預先把所有的圖片都加載進內存 400張1.27M(1024*768 jpg) 理論上400*1.27=508M 但事實上內存占用達到了1300多M(我也不知道為什麼會那麼多)!然而空間占用了時間卻沒有換來,卡頓照常!
2、還是以空間換時間,不過這次使用 List<ImageSource>來緩存所有的圖片。然而事實還是讓人悲傷!不過還好,這時候讓我發現了問題的關鍵所在,就在於Image 的呈現上!如果ImageSource被呈現過之後,再次賦值給Image程序速度會加快很多!以下是本人的一些測試:
400張1.27M左右的圖片,內存占用1360多M,第一次呈現需要35ms左右,之後呈現耗時15ms左右。
400張860K左右的圖片,內存占用1300多M,呈現耗時30ms左右 之後呈現耗時15ms左右
本欄目