2012-10-07 61 views
9

Tengo una aplicación WPF que tiene una ventana principal. En eso tengo un marco, el contenido del marco es una página.objeto 3D no procesado

Ahora en la página es 4 viewport3D que contiene Viewport2DVisual3D y en eso tengo elemento de imagen.

Problema: en algunas PCs mi aplicación funciona bien, pero en algunas PC mi aplicación no representa viewport3d o no representa el marco. No sé pero no muestra nada en la ventana principal.

El problema se produce en una computadora portátil Acer Model.

prestados: True Image

sin fundir: enter image description here

EDIT: Este problema se produjo de nuevo cuando coloqué el bastidor en una cuadrícula. (Muestro esta página en un marco, ese marco es el contenido principal de mi ventana: cuando coloco el marco en una cuadrícula, no se muestran objetos) Parece esto Occure en la computadora portátil con gráficos compartidos

EDIT 2:

<Page x:Class="MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       Loaded="Page_Loaded_1" 
     x:Name="myMainPage" FlowDirection="RightToLeft" > 

    <Page.Resources> 

     <Style TargetType="ContentControl" x:Key="MenuItemsStyle"> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 

         <Viewport3D VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ClipToBounds="False"> 
          <Viewport3D.Camera> 
           <PerspectiveCamera x:Name="myCam" FieldOfView="90" Position="{Binding ElementName=myMainWindow, Path=CameraHeight}" NearPlaneDistance="1" FarPlaneDistance="10"/> 
          </Viewport3D.Camera> 

          <ModelVisual3D> 
           <ModelVisual3D.Content> 
            <Model3DGroup> 
             <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/> 
            </Model3DGroup> 
           </ModelVisual3D.Content> 
          </ModelVisual3D> 

          <Viewport2DVisual3D x:Name="V2d3d"> 

           <Viewport2DVisual3D.Transform> 
            <Transform3DGroup> 
             <RotateTransform3D > 
              <RotateTransform3D.Rotation> 
               <AxisAngleRotation3D Axis="0,1,0" Angle="0" x:Name="aar3D"/> 
              </RotateTransform3D.Rotation> 
             </RotateTransform3D> 
            </Transform3DGroup> 
           </Viewport2DVisual3D.Transform> 

           <Viewport2DVisual3D.Material> 
            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> 
           </Viewport2DVisual3D.Material> 
                   <Viewport2DVisual3D.Geometry> 
            <MeshGeometry3D Positions="{Binding ElementName=myMainWindow, Path=MeshPosions}" 
          TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> 
           </Viewport2DVisual3D.Geometry> 
           <Border Name="mainBorder" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
            <Border.Style> 
             <Style TargetType="Border"> 
              <Setter Property="BorderThickness" Value="1.2"/> 
              <Setter Property="Background" > 
               <Setter.Value> 
                <SolidColorBrush Color="Transparent"/> 
               </Setter.Value> 
              </Setter> 
              <Setter Property="BorderBrush" > 
               <Setter.Value> 
                <SolidColorBrush Color="Transparent"/> 
               </Setter.Value> 
              </Setter> 
                       </Style> 
            </Border.Style> 
            <ContentPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
                 Content="{TemplateBinding ContentControl.Content}"> 
             <ContentPresenter.Triggers> 
              <EventTrigger RoutedEvent="ContentPresenter.MouseLeftButtonDown"> 
               // Axis Animation 
              </EventTrigger> 
             </ContentPresenter.Triggers> 
            </ContentPresenter> 
           </Border> 
          </Viewport2DVisual3D> 
         </Viewport3D> 

        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="ContentControl.MouseLeftButtonDown" > 
        //Axis Animation 
       </EventTrigger> 
       <EventTrigger RoutedEvent="ContentControl.MouseEnter"> 
        //ScaleAnimation 
           </EventTrigger> 
       <EventTrigger RoutedEvent="ContentControl.MouseLeave"> 
        //ScaleAnimation 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 

    </Page.Resources> 

    <Page.Triggers> 
     <EventTrigger RoutedEvent="Loaded"> 
      //Load Object Scale And Fade In 
     </EventTrigger> 
    </Page.Triggers> 

    <Grid Name="MainGrid"> 


       <Canvas Name="MainCanvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FlowDirection="LeftToRight"> 
      <ContentControl Opacity="0" Name="MenuItem1" Style="{StaticResource MenuItemsStyle}" 
          MouseDown="MenuItem1_MouseDown" Panel.ZIndex="1" > 
       <Image Source="/IsargaranProject;component/Images/isargari.jpg"/> 
       <ContentControl.RenderTransform> 
        <ScaleTransform ScaleX="0.7" ScaleY="0.7" x:Name="MenuItem1ST"/> 
       </ContentControl.RenderTransform> 
      </ContentControl> 
     </Canvas> 

    </Grid> 
</Page> 
+2

Lo único que se me ocurre es lo siguiente: 1. Se deben cambiar las configuraciones de aceleración 3D en la computadora portátil. 2. Viewport2DVisual3D no está instalado en la computadora portátil. – WozzeC

+0

¿Qué versión de WPF está utilizando y puede proporcionar algún código para que podamos ver cómo está construyendo la vista. – Sam

+0

Agregué el código. Estoy usando .net 4. Y cómo instalar Viewport2DVisual3D. ¿Qué configuración debo hacer? –

Respuesta

1

Si está usando OpenGL o DirectX3D, a continuación, ver que el ordenador portátil que no está prestando, tendrá algunos plugins que faltan, como no podría ser instalado DirectX u OpenGL 3D puede probar estas dos herramientas de representación 3D de la Igual ... lo había intentado en el pasado, había hecho un programa Graph, estaba teniendo el mismo problema, pero cuando instalé OPENGL & DirectX3D ¡estaba funcionando bien!

+0

Bienvenido a StackOverflow. Cuando responda preguntas, considere publicar enlaces a material de referencia que respalde su respuesta. Por ejemplo, puede citar una página de Microsoft que indique que viewport3d depende de OpenGL y/o Direct3D. – pseudocoder

+0

¡Lo siento ..! en ese momento tenía prisa, así que respondí rápido, así que olvidé agregar un enlace, ¡pero la próxima vez estoy seguro de agregar un enlace ...! Gracias –

+0

parece que tuviste este problema antes, así que lo voto pero lo intentaré más tarde cuando vuelva a ver a ese cliente. –

Cuestiones relacionadas