Ir a contenido


MENSAJE DE BIENVENIDA Foro vínculado con Twitter, más info aquí.

“El secreto para progresar es empezar por algún lugar. El secreto para empezar por algún lugar es fragmentar tus complejas y abrumadoras tareas de tal manera que queden convertidas en pequeñas tareas que puedas realizar y entonces simplemente comenzar por la primera.” - Mark Twain

Foto

Ejemplo Creación Cuadrado en vista 3D


  • Please log in to reply
No replies to this topic

#1 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 14 octubre 2010 - 16:18

Os dejo el código de un ejemplo sencillo para aquellos que comiencen con la utilización de WPF:

archivo.xaml
<Window x:Class="Prueba.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="EjemploCuadrado" Height="350" Width="525">
    <Grid>
        <DockPanel 
  Width="Auto" 
  VerticalAlignment="Stretch" 
  Height="Auto" 
  HorizontalAlignment="Stretch" 
  Grid.ColumnSpan="1" 
  Grid.Column="0" 
  Grid.Row="0" 
  Margin="0,0,0,0" 
  Grid.RowSpan="1">
            <StackPanel>
                <StackPanel.Background>
                    <LinearGradientBrush>
                        <GradientStop Color="White" Offset="0"/>
                        <GradientStop Color="DarkKhaki" Offset=".3"/>
                        <GradientStop Color="DarkKhaki" Offset=".7"/>
                        <GradientStop Color="White" Offset="1"/>
                    </LinearGradientBrush>
                </StackPanel.Background>
                <StackPanel Margin="10">
                    <Button 
     Name="simpleButton" 
     Click="CuadradoButtonClick">Cuadrado</Button>
                </StackPanel>
            </StackPanel>
            <Viewport3D Name="mainViewport" ClipToBounds="True">
                <Viewport3D.Camera>
                    <PerspectiveCamera 
	  FarPlaneDistance="100"
	  LookDirection="1,-10,1"
	  UpDirection="0,1,0"
	  NearPlaneDistance="1" 
	  Position="1,20,1" 
	  FieldOfView="70" />
                </Viewport3D.Camera>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <DirectionalLight 
	    Color="White" 
	    Direction="-2,-3,-1" />
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>
        </DockPanel>
    </Grid>
</Window>

archivo.xaml.cs
namespace Prueba
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            
        }

        private void CuadradoButtonClick(object sender, RoutedEventArgs e)
        {
            MeshGeometry3D mallaCuadrado = new MeshGeometry3D();
            // Puntos Primer Triangulo
            Point3D point0 = new Point3D(0, 0, 0);
            Point3D point1 = new Point3D(0, 0, 5);
            Point3D point2 = new Point3D(5, 0, 0);
            // Puntos Segundo Triangulo
            Point3D point3 = new Point3D(0, 0, 5);
            Point3D point4 = new Point3D(5, 0, 5);
            Point3D point5 = new Point3D(5, 0, 0);
            // Vertices Primer Triangulo
            mallaCuadrado.Positions.Add(point0);
            mallaCuadrado.Positions.Add(point1);
            mallaCuadrado.Positions.Add(point2);
            // Vertices Segundo Triangulo
            mallaCuadrado.Positions.Add(point3);
            mallaCuadrado.Positions.Add(point4);
            mallaCuadrado.Positions.Add(point5);
            // Indices Primer Triangulo (Sentido Contrario Agujas Reloj Cara Visible).
            mallaCuadrado.TriangleIndices.Add(0);
            mallaCuadrado.TriangleIndices.Add(1);
            mallaCuadrado.TriangleIndices.Add(2);
            // Indices Segundo Triangulo (Sentido Contrario Agujas Reloj Cara Visible).
            mallaCuadrado.TriangleIndices.Add(3);
            mallaCuadrado.TriangleIndices.Add(4);
            mallaCuadrado.TriangleIndices.Add(5);
            Vector3D normal = new Vector3D(0,1, 0);
            // Normales Primer Triangulo
            mallaCuadrado.Normals.Add(normal);
            mallaCuadrado.Normals.Add(normal);
            mallaCuadrado.Normals.Add(normal);
            // Normales Segundo Triangulo
            mallaCuadrado.Normals.Add(normal);
            mallaCuadrado.Normals.Add(normal);
            mallaCuadrado.Normals.Add(normal);
            Material material1 = new DiffuseMaterial(new SolidColorBrush(Colors.DarkKhaki));
            GeometryModel3D geometriaCuadrado = new GeometryModel3D(mallaCuadrado, material1);
            ModelVisual3D modelo = new ModelVisual3D();
            modelo.Content = geometriaCuadrado;
            this.mainViewport.Children.Add(modelo);
        }
    }
}

Resultado:

Posted Image
Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada




0 usuarios están leyendo este tema

0 miembro/s, 0 invitado/s, 0 usuario/s anónimo/s