2010-05-31 8 views
1

Je veux présenter jusqu'à 300 chaînes (juste quelques mots) dans un Viewport3D - rapide! Je veux les rendre sur différentes positions Z et zoomer et dézoomer couramment.WPF - Rendre le texte dans Viewport3D

Les moyens que j'ai trouvé à ce jour pour rendre le texte dans un Viewport3D:

  • Mettez un TextBlock dans un Viewport2DVisual3D.
  • This guy's Classe PlanarText.
  • La classe SolidText du même type.
  • Créez mon propre panneau 2D et alignez les TextBlocks dessus. Appelez InvalidateArrange() chaque fois que je mets à jour la position de la caméra.

Tous ces éléments sont extrêmement lents et éloignés du zoom, même avec 10 chaînes seulement. Quelqu'un at-il une solution pour ce pratique? Il doit être possible de rendre du texte dans un Viewport3D sans attendre secondes!

Répondre

1

Avez-vous essayé d'utiliser VisualBrush comme matériau pour chaque modèle GeometryModel3D?

Quelque chose comme ceci:

<GeometryModel3D> 
    <GeometryModel3D.Geometry> 
    <MeshGeometry3D Positions="0,0,0 1,0,0 1,1,0 0,1,0" TriangleIndices="0,1,2 2,3,0" /> 
    </GeometryModel3D.Geometry> 
    <GeometryModel3D.Material> 
    <VisualBrush ...> 
     <VisualBrush.Visual> 
     <TextBlock Text="Some text here" /> 
     </VisualBrush.Visual> 
    </VisualBrush> 
    </GeometryModel3D.Material> 
</GeometryModel3D> 
+1

Juste essayé hier - et je suppose que j'ai découvert la raison de problèmes de performance maintenant: Si le texte a une couleur d'arrière-plan, de sorte que l'objet est de forme rectangulaire, tout fonctionne vite. Mais dès que je veux voir d'autres objets à travers le texte (pas de transparence, mais à travers les hOles), ça devient lent. – eWolf

Questions connexes