2012-07-09 43 views
0

我創建了一個模型(多維數據集)並將其添加到我的視口,它可以正常工作,沒有任何問題。wpf中的清晰視口

this.mainViewport.Children.Add(model);

無論何時我使用以下代碼,該多維數據集將變爲黑色而不是原始顏色。

this.mainViewport.Children.Clear(); this.mainViewport.Children.Add(model);

我需要清除視口,因爲我在下一秒將其添加到另一個位置。任何建議來解決這個問題將不勝感激。

+0

包含在mainViewPort顏色?我認爲你不應該清除孩子。視口具有獨立於諸如光,變換等對象的其他東西。爲什麼你需要清除()? – MBen 2012-07-09 17:45:56

+0

感謝您的回覆。實際上我需要改變立方體的位置(在一個數據文件中,我有不同的3D點,我根據這些點改變了立方體的位置,我創建了一個計時器並根據計時器讀取下一個數據,並可視化對象因此),我認爲這是最簡單的方法。任何建議 – MKS 2012-07-09 17:55:15

+0

這裏是我的代碼: ModelVisual3D model = new ModelVisual3D(); model.Content = cube; this.mainViewport.Children.Clear(); this.mainViewport.Children.Add(model); – MKS 2012-07-09 17:57:46

回答

0

我會做這樣的事情,而不是: 創建多維數據集首次在它開始的位置:

ModelVisual3D model = new ModelVisual3D(); 
model.Content = cube; 

然後在計時器我會改變變換機智的新位置:

model.Transform = new TranslateTransform3D(X, Y, Z); // model need to be a field in your class 

其他可用的transorms有:

  1. ScaleTransform3D

  2. RotateTransform3D

  3. MatrixTransform3D

  4. Transform3DGroup

0

我知道這是一個老問題,但正確的答案可以幫助別人。立方體得到黑色的,因爲
this.mainViewportChildren.Clear()
還消除光源(任何),使立方體得到原來的顏色,你必須添加到您的代碼是這樣的:
this.mainViewport.Children.Add(new ModelVisual3D() { Content = new AmbientLight(Colors.White) });