日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Silverlight 参考:三维效果(透视转换) -- MSN

發布時間:2025/7/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Silverlight 参考:三维效果(透视转换) -- MSN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

您可以使用"透視轉換"來將三維效果應用于任何 Silverlight UIElement。例如,您可以制造這樣一個假象,即對象朝向您或遠離您進行旋轉,如下圖中所示。

使用透視轉換的圖像

盡管上圖中顯示了應用于一個簡單圖像的透視轉換,但您可以將透視轉換應用于 UIElement,包括控件。例如,您可以將該效果應用于 Grid,而后者又包含 TextBoxButton。盡管旋轉這些控件,但用戶可以在 TextBox 中鍵入內容并單擊 Button(假定這些控件可見)。

使用透視轉換的另一個常見情形是相對于彼此對對象進行排列,以便創建三維效果,如下圖中所示。

堆疊對象以創建三維效果

除了創建靜態的三維效果外,還可以對透視轉換屬性進行動畫處理,以便創建移動的三維效果。

說明

透視轉換與三維引擎不等效;但是,它們都可用于使得二維 Silverlight 內容就像是在三維平面上繪制的一樣。

在三維平面上旋轉對象

若要將某一屬性轉換應用于 UIElement,請將 Projection 對象的 UIElement 屬性設置為 PlaneProjectionPlaneProjection 定義轉換在空間中呈現的方式。下面的示例顯示了一個簡單的情況。

?

?

代碼 <StackPanel?Margin="35"?Background="Gray">
????
<StackPanel.Projection>
????????
<PlaneProjection?RotationX="-35"?RotationY="-35"?RotationZ="15"??/>
????
</StackPanel.Projection>
????
<TextBlock?Margin="10">Type?Something?Below</TextBlock>
????
<TextBox?Margin="10"></TextBox>
????
<Button?Margin="10"?Content="Click"?Width="100"?/>
</StackPanel>

?

?

在上例中,RotationXRotationYRotationZ 屬性指定圍繞一個軸旋轉 StackPanel 的度數。例如,RotationX 屬性指定圍繞對象的水平軸旋轉。下圖演示了 RotationX 屬性如何圍繞 x 軸旋轉一個對象。

RotateX = "-35"


在該圖中,還要注意 y 軸和 z 軸是如何顯示的。所有這三個軸相交的點稱作旋轉中心。

RotationY 屬性圍繞旋轉中心的 y 軸旋轉。

RotateY = "-35"


RotationZ 屬性圍繞旋轉中心的 z 軸(直接穿過對象平面的直線)旋轉。

RotateZ = "-45"


這些旋轉屬性可以指定負值,這會以反方向將對象旋轉某一度數。此外,絕對數可以大于 360,這會使對象旋轉的度數超過一個完整旋轉(即 360 度)。在下面的示例中,您可以為 RotationXRotationYRotationZ 屬性試驗不同值,以便看看效果。

運行此示例

您可以通過使用 CenterOfRotationXCenterOfRotationYCenterOfRotationZ 屬性,移動旋轉中心。默認情況下,旋轉軸直接穿過對象的中心,這導致對象圍繞其中心旋轉;但是,如果您將旋轉的中心移到對象的外邊緣,對象將圍繞該外邊緣旋轉。CenterOfRotationXCenterOfRotationY 的默認值是 0.5,CenterOfRotationZ 的默認值是 0。對于 CenterOfRotationXCenterOfRotationY,0 和 1 之間的值會將軸線設置在對象內的某個位置。值為 0 表示一個對象邊緣,值為 1 表示對側邊緣。允許此范圍外的值,并且將相應移動旋轉中心。因為旋轉中心的 z 軸繪制穿過對象的平面,所以,

CenterOfRotationX 沿著與該對象平行的 x 軸移動旋轉中心,而 CenterOfRotationY 沿著該對象的 y 軸移動旋轉中心。下圖演示將不同的值用于 CenterOfRotationY

CenterOfRotationY = "0.5"(默認值)

CenterOfRotationY = "0.1"(上邊緣)

請注意在 CenterOfRotationY 屬性設置為默認值 0.5 時圖像是如何圍繞中心旋轉的,以及在設置為 0.1 時是如何靠近上邊緣旋轉的。在更改 CenterOfRotationX 屬性以便移動 RotationY 屬性旋轉對象的位置時,您會看到相似的行為。

CenterOfRotationX = "0.5"(默認值)

CenterOfRotationX = "0.9"(右側邊緣)

使用下面的滑塊示例試驗圍繞旋轉中心的不同位置旋轉對象的結果。

?

定位對象

到此為止,您已學習了如何在空間中旋轉對象。此外,您可以通過使用以下屬性,相對于這些旋轉的對象彼此的位置在空間中定位它們:

  • LocalOffsetX 沿旋轉對象平面的 x 軸平移對象。

  • LocalOffsetY 沿旋轉對象平面的 y 軸平移對象。

  • LocalOffsetZ 沿旋轉對象平面的 z 軸平移對象。

  • GlobalOffsetX 沿屏幕對齊的 x 軸平移對象。

  • GlobalOffsetY 沿屏幕對齊的 y 軸平移對象。

  • GlobalOffsetZ 沿屏幕對齊的 z 軸平移對象。

本地偏移量

LocalOffsetXLocalOffsetYLocalOffsetZ 屬性在對象已旋轉后沿對象平面的相應軸平移對象。因此,對象的旋轉確定對象平移的方向。為了演示此概念,下面的示例將 LocalOffsetX 動畫處理為從 0 到 400,并且將 RotationY 動畫處理為從 0 到 65 度。

?

全局偏移量

GlobalOffsetXGlobalOffsetYGlobalOffsetZ 屬性相對于屏幕沿軸平移對象。也就是說,與本地偏移量屬性不同,對象沿其移動的軸與應用于該對象的任何旋轉無關。當您只是想沿著屏幕的 x、y 或 z 軸移動對象,而不擔心應用于對象的旋轉時,這些屬性很有用。

?

Matrix3DProjection 和 Matrix3D

您可以將 Matrix3DProjectionMatrix3D 類型用于比使用 PlaneProjection 可能更復雜的準三維方案。Matrix3DProjection 向您提供一個完整的三維轉換矩陣以應用于任何 UIElement,這樣能夠將任意模型轉換矩陣和透視矩陣應用于 Silverlight 元素。請記住,這些 API 是最簡化的形式,因此,如果您使用它們,將需要編寫正確創建三維轉換矩陣的代碼。因此,將 PlaneProjection 用于簡單的三維方案更容易。

?

?

?

轉載于:https://www.cnblogs.com/Dlonghow/archive/2010/03/12/1683910.html

總結

以上是生活随笔為你收集整理的Silverlight 参考:三维效果(透视转换) -- MSN的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。