Mega Code Archive

 
Categories / C# / WPF
 

Draw a 3D Model

<Window x:Class="WpfApplication1.Window1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   Background="Black"   Title="" Height="300" Width="300" Loaded="Window1_Loaded">   <Window.Resources>     <MeshGeometry3D x:Key="triangleMesh" Positions="-1,-1,0 1,-2,-1 1,1,0" TriangleIndices="0 1 2" />   </Window.Resources>   <Viewport3D x:Name="vp">     <Viewport3D.Camera>       <PerspectiveCamera LookDirection="0,0,-1" Position="0,0,5" />     </Viewport3D.Camera>     <ModelVisual3D>       <ModelVisual3D.Content>         <PointLight Position="0,-1,1" Color="White" />       </ModelVisual3D.Content>     </ModelVisual3D>   </Viewport3D> </Window> //File:Window.xaml.cs using System.Windows; using System.Windows.Media; using System.Windows.Media.Media3D; namespace WpfApplication1 {     public partial class Window1 : Window     {         public Window1()         {             InitializeComponent();         }         private void Window1_Loaded(object sender, RoutedEventArgs e)         {             MeshGeometry3D triangleMesh = (MeshGeometry3D)TryFindResource("triangleMesh");             for (int i = 0; i < 4; i++)             {                 ModelVisual3D modelVisual3D = new ModelVisual3D();                 GeometryModel3D geometryModel3D = new GeometryModel3D();                 geometryModel3D.Geometry = triangleMesh;                 geometryModel3D.Material = new DiffuseMaterial(Brushes.Firebrick);                 modelVisual3D.Content = geometryModel3D;                 RotateTransform3D rotateTransform = new RotateTransform3D();                 rotateTransform.Rotation = new AxisAngleRotation3D(new Vector3D(0, 0, -1),i * 40);                 modelVisual3D.Transform = rotateTransform;                 vp.Children.Add(modelVisual3D);             }         }     } }