现在的位置: 首页 > 综合 > 正文

3D绘图_2(SDK中例题解析)

2014年01月10日 ⁄ 综合 ⁄ 共 2656字 ⁄ 字号 评论关闭
<Window x:Class="Visual3DSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:Primitive3DSurfaces;assembly=Primitive3DSurfaces" 
    Title="3D 模型範例" 
    WindowState="Normal"
>
  <Window.Triggers>
     <!--注册一个事件,当窗体加载的时候,角度从0旋转到360度在10秒内。一直重复-->
    <EventTrigger RoutedEvent="Window.Loaded" >
      <EventTrigger.Actions>
      <BeginStoryboard>
        <Storyboard Name="myStoryBoard">
          <DoubleAnimation
            Storyboard.TargetName="rotation" 
            Storyboard.TargetProperty="Angle" 
            From="0" To="360" Duration="0:0:10" RepeatBehavior="Forever"/>
        </Storyboard>
      </BeginStoryboard>
      </EventTrigger.Actions>
    </EventTrigger>
  </Window.Triggers>
    
  <Grid>
    <Grid.Background>
            <!--网格使用了线性渐变色,从左上角到左下角,由Black到DarkBlue-->
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
          <GradientStop Color="Black" Offset="0"/>
          <GradientStop Color="DarkBlue" Offset="1"/>
      </LinearGradientBrush>
    </Grid.Background>
      
    <Viewport3D Grid.Column="0" Grid.Row="0">
      
        <!--定义照相机-->
      <Viewport3D.Camera>
        <PerspectiveCamera Position="0,0,-8" UpDirection="0,1,0" LookDirection="0,0,1" FieldOfView="45" NearPlaneDistance="0.125"/>
      </Viewport3D.Camera>       
        
        <!--定义光源-->
        <ModelVisual3D>
          <ModelVisual3D.Content>
            <DirectionalLight Color="White" Direction="0,0,1" />
          </ModelVisual3D.Content>
        </ModelVisual3D>
        
        <!--定义3D模型-->
        <ModelVisual3D>
          <!--定义模型的旋转规则:按照上面定义好的旋转规则(myStoryBoard)绕Y轴旋转-->
          <ModelVisual3D.Transform>
            <RotateTransform3D>
              <RotateTransform3D.Rotation>
                <AxisAngleRotation3D  x:Name="rotation" Angle="0" Axis="0,1,0" />
              </RotateTransform3D.Rotation>
            </RotateTransform3D>
          </ModelVisual3D.Transform>
            
            <!--球体(获取后台定义好的数据源)-->
          <my:Sphere3D>
            <ModelVisual3D.Transform>
              <TranslateTransform3D OffsetX="2" OffsetY="0" OffsetZ="0"  />
            </ModelVisual3D.Transform>
              <!--设置材质-->
            <my:Sphere3D.Material>
              <DiffuseMaterial>
                            <DiffuseMaterial.Brush>
                                <!--使用图片-->
                                <!--<SolidColorBrush Color="red" Opacity="1.0"/>-->
                                <ImageBrush ImageSource=".\Images\earth.jpg" />
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
            </my:Sphere3D.Material>
          </my:Sphere3D>
            
           <!--圆柱体-->
          <my:Cylinder3D>
            <ModelVisual3D.Transform>
              <TranslateTransform3D OffsetX="-1" OffsetY="0" OffsetZ="1.73" />
            </ModelVisual3D.Transform>
            <my:Cylinder3D.Material>
              <DiffuseMaterial>
                            <DiffuseMaterial.Brush>
                                <ImageBrush ImageSource=".\Images\Autumn.jpg" />
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
            </my:Cylinder3D.Material>
          </my:Cylinder3D>
            
           <!--圆柱体-->
          <my:Cone3D>
            <ModelVisual3D.Transform>
              <TranslateTransform3D OffsetX="-1" OffsetY="0" OffsetZ="-1.73" />
            </ModelVisual3D.Transform>
              
            <my:Cone3D.Material>
              <DiffuseMaterial>
                            <DiffuseMaterial.Brush>
                                <ImageBrush ImageSource=".\Images\Azul.jpg" />
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
            </my:Cone3D.Material>
          </my:Cone3D>
            
        </ModelVisual3D>
        
    </Viewport3D>
      
  </Grid>
</Window>

2、定义模型的数据源代码比较多就不贴上了,需要请下载源代码。

源代码下载:点击打开链接

抱歉!评论已关闭.