由於需要做幾個抽獎程式,是抽獎程式,做的酷炫華麗必不可少。不太熟悉flash,因此放棄;如果用silverlight做,需要在網頁中呈現,不方便,放棄;自己熟悉的技術只有Winform和WPF了。做了一番之後,發現要想用Winform實現比較酷炫華麗的效果真的很困難,而WPF相對簡單多了。既然做就做成最酷的,用立方體呈現翻盤,表面布上卡通畫的紋理,滑鼠移動到立方體上,立方體旋轉,觸發聲音,用徐徐展開的畫卷並伴隨著音樂呈現結果是個不錯的創意。
最終結果
展開後
XAML定義按鈕模板實現立方體按鈕。
按鈕觸發後改變按鈕樣式並禁用按鈕。
核心代碼:<Viewport3D>
<Viewport3D.Camera>
<PerspectiveCamera Position="2.9,2.9,2.9" LookDirection="-1,-1,-1" />
</Viewport3D.Camera>
<Viewport3D.Children>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Direction="-0.3,-0.4,-0.5" />
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0,1,0" Angle="0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</ModelVisual3D.Transform>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<VisualBrush ViewportUnits="Absolute" Transform="1,0,0,-1,0,1">
<VisualBrush.Visual>
<Border Background="{Binding Path=Background, RelativeSource='{RelativeSource TemplatedParent}'}">
<Label Content="{Binding Path=Content, RelativeSource='{RelativeSource TemplatedParent}'}" />
</Border>
</VisualBrush.Visual>
</VisualBrush>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Positions="1,1,-1 1,-1,-1 -1,-1,-1 -1,1,-1 1,1,1 -1,1,1 -1,-1,1 1,-1,1 1,1,-1 1,1,1 1,-1,1 1,-1,-1 1,-1,-1 1,-1,1 -1,-1,1 -1,-1,-1 -1,-1,-1 -1,-1,1 -1,1,1 -1,1,-1 1,1,1 1,1,-1 -1,1,-1 -1,1,1"
TriangleIndices="0 1 2 0 2 3 4 5 6 4 6 7 8 9 10 8 10 11 12 13 14 12 14 15 16 17 18 16 18 19 20 21 22 20 22 23"
TextureCoordinates="0,1 0,0 1,0 1,1 1,1 -0,1 0,-0 1,0 1,1 -0,1 0,-0 1,0 1,0 1,1 -0,1 0,-0 -0,0 1,-0 1,1 0,1 1,-0 1,1 0,1 -0,0"/>
</GeometryModel3D.Geometry>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D.Children>
</Viewport3D>