赞
踩
在WPF中构建一个简单的立方体比较容易实现,可参考资料也比较众多。比较麻烦的是处理点击交互。
我在WPF中用两种方式实现了3DCube,效果图如下:
方式一: 最常见的3D内容构建模式,结构如下图。
参考
- <Viewport3D SnapsToDevicePixels="True" ClipToBounds="True"
- RenderTransformOrigin="0.5 0.5" RenderOptions.EdgeMode="Aliased"
- RenderOptions.CachingHint="Cache">
- <!--Camera-->
- <Viewport3D.Camera>
- <PerspectiveCamera x:Name="CameraMain" Position="4,4,6" UpDirection="0,1,0" LookDirection="-4,-4,-6"
- NearPlaneDistance="1" FarPlaneDistance="100" FieldOfView="120">
- <PerspectiveCamera.Transform>
- <Transform3DGroup>
- <RotateTransform3D>
- <RotateTransform3D.Rotation>
- <AxisAngleRotation3D x:Name="CameraRotate" Axis="0,1,0" Angle="0"/>
- </RotateTransform3D.Rotation>
- </RotateTransform3D>
- <ScaleTransform3D />
- </Transform3DGroup>
- </PerspectiveCamera.Transform>
- </PerspectiveCamera>
- </Viewport3D.Camera>
- <!--Light-->
- <ModelVisual3D>
- <ModelVisual3D.Content>
- <Model3DGroup>
- <AmbientLight Color="White"></AmbientLight>
- <DirectionalLight Color="White" Direction="4,6,-6"/>
- </Model3DGroup>
- </ModelVisual3D.Content>
- </ModelVisual3D>
- <!--六个面-->
- <ModelVisual3D x:Name="CubeSlaveContainer">
- <ModelUIElement3D>
- <GeometryModel3D x:Name="TopPanel">
- <GeometryModel3D.Material>
- <DiffuseMaterial x:Name="MaterialTop">
- <DiffuseMaterial.Brush>
- <VisualBrush>
- <VisualBrush.Visual>
- <TextBlock Text="1" Foreground="White"/>
- </VisualBrush.Visual>
- </VisualBrush>
- </DiffuseMaterial.Brush>
- </DiffuseMaterial>
- </GeometryModel3D.Material>
- <GeometryModel3D.BackMaterial>
- <DiffuseMaterial Brush="Transparent"/>
- </GeometryModel3D.BackMaterial>
- <GeometryModel3D.Geometry>
- <MeshGeometry3D Positions="-2,2,2 2,2,2 2,2,-2 -2,2,-2"

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。