程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF實現3D模型和3D場景

WPF實現3D模型和3D場景

編輯:關於.NET

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左右

本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved