2012-06-12 166 views
-1

如果我有一個文本和圖像的網格,如日曆視圖。如果我想讓整個網格躺下45度,並且仍然能夠響應手指點擊/滾動,該怎麼做?非常感謝!如何模擬2D 3D(放下)

回答

2

好的,如果你在XNA中這樣做,你會想要使用廣告牌。恐怕我還沒有廣告牌需要,所以我不能給你具體細節,但像往常一樣,這是一個Riemers Tutorial。現在,具體而言,您希望擁有帶控件的互動廣告牌。如果你以前從未有過3D體驗,這將會很複雜。這裏就是你會想做什麼:

  1. 畫出你的控制,你通常會用SpriteBatch,但GraphicsDevice的的渲染目標設置到一個新的渲染目標提前,保存所/文本。有關更改rendertarget的文檔,請查看here。請記住在繪製控件後將其重新設置。
  2. 現在使用顯式轉換將RenderTarget轉換爲Texture2D:Texture2D myTex = (Texture2D)myRenderTarget;
  3. 在廣告牌上繪製此紋理。
  4. 現在出現棘手的部分:您需要使用名爲「揀選」的技術來確定用戶點擊了3D空間中的哪個位置。應用程序中心有一些挑選教程,但它們適用於複雜的模型。由於廣告牌只使用一個有兩個三角形的平面,所以在這種情況下,它們將無法正確工作,這是您需要的。相反,我建議using Viewport.UnProject to pick on the plane

從本質上講,您將需要一個良好的系統來跟蹤3D空間中廣告牌上的可點擊事件。如果你知道他們(我認爲我在微積分III中學到了這些),你可以使用平面方程。如果您只需要基本功能,您可以使用這些方程式僅跟蹤按鈕的中心,然後執行半徑測試以進行點擊,但這並不完全準確,除非您的按鈕是圓形。

如果您無法判斷,當您嘗試在3D世界中應用2D概念時,情況變得非常複雜。

4

有一個非常簡單的解決方案。 如果使用Expression Blend打開項目,一旦選擇了網格,轉到屬性選項卡,向下縮放到「變換」,應該有一個名爲「旋轉」的屬性,只需更改X:Y:Z:直到網格旋轉到您希望的樣子。它的行爲完全如你所期望的那樣。

這裏的XAML代碼:

<Grid.Projection> 
    <PlaneProjection RotationX="-43"/> 
</Grid.Projection> 
+0

我想我寫的「XNA」的主題,但不知何故消失了。我一直在努力使用XNA或silverlight。但我覺得使用XNA更加舒服,因爲它非常簡單。 Silverlight可以動態地在網格中添加控件嗎?在網格控制中繪製文本和圖像?輪轉能動態變化嗎?可以處理網格內新增控件的點擊事件?請指教!非常感謝! – thsieh

+0

不確定創建控件,因爲我自己沒有這樣做,但是是繪製文本和圖像,是的,以動態更改旋轉,不確定是否處理新創建的控件的事件。您是否嘗試過關於Silverlight控件的MSDN文章? –