Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1584 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Charger un gros textes dans une surface (DirectX)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Charger un gros textes dans une surface (DirectX)

n°1244500
bkadoum
Posté le 13-11-2005 à 00:11:46  profilanswer
 

Dans un jeu en DirectX, je dois insérer de gros texte dans des surfaces. Pour ça mes textes doivent être mit à la ligne lorsque la longueur est trop grande. J'ai essayé avec /n, /r/n ça marche pas. On dirait que lorsque la surface est crée et dimensionnée, elle ne detecte pas les caractères de mise à la ligne et ça me fait une surface de 3000 px en largeur et 16 px en hauteur ce qui rend le texte illisible sur l'écran.  Bon c'est un problème qui doit être super connu mais je trouve aucune bonne référence qui m'aiderai à le résoudre.
 
Pour info j'utilise les fonctions strcpy(), strcat() , strlen() pour stocker et manipuler mes chaînes. C'est dépassé je sais :p mais doit bien y'avoir un moyen!
 
Une petite aide ou un tuyau me serait utile :)

mood
Publicité
Posté le 13-11-2005 à 00:11:46  profilanswer
 

n°1245500
Koko90
L'éternité plus 10%
Posté le 14-11-2005 à 18:44:49  profilanswer
 

Solution stupide : tu crée une surface par ligne en gérant toi-même les sauts de ligne (c'est con, mais je ne peux pas t'aider plus, j'ai jamais vraiment utilisé DirectX).
PS : Sinon la vrai réponse m'interesse aussi.


Message édité par Koko90 le 14-11-2005 à 18:45:39

---------------
Découvrez l'anthologie des posts de Mikhail. Je suis le cinéphile déviant.
n°1245768
bkadoum
Posté le 15-11-2005 à 08:43:28  profilanswer
 

Je l'ai partiellement trouvée. Il faut utiliser la fonction Windows DrawText() au lieu de TextOut() pour afficher le texte dans un rectangle, en spécifiant le format DT_WORDBREAK.
 
Le problème c'est que, à l'endroit où les mots sont coupés, la surface est vide et tout ce qui a été chargé précédamment (textes images) s'y affiche, c'est donc très moche. Je trouve pas l'option pour contrer ce problème, va falloir bricoler un truc.


Message édité par bkadoum le 15-11-2005 à 08:46:19
n°1245770
rufo
Pas me confondre avec Lycos!
Posté le 15-11-2005 à 08:51:49  profilanswer
 

j'avais fait un petit jeu en DirectDraw y' 1 an de ça et j'étais tombé sur le même problème. Comme solution, vu que je travaillais avec des polices à espacement fixe, je comptais le nb de caractères et je coupais à un certain nb (sans couper en plein milieu d'un mot tout de même) et passais à la ligne avec textout (il me semble), mais je ne crois pas que je créais une nouvelle surface, je me déclais seulement vers le bas de qq pixels.

n°1245886
bkadoum
Posté le 15-11-2005 à 11:50:24  profilanswer
 

rufo a écrit :

j'avais fait un petit jeu en DirectDraw y' 1 an de ça et j'étais tombé sur le même problème. Comme solution, vu que je travaillais avec des polices à espacement fixe, je comptais le nb de caractères et je coupais à un certain nb (sans couper en plein milieu d'un mot tout de même) et passais à la ligne avec textout (il me semble), mais je ne crois pas que je créais une nouvelle surface, je me déclais seulement vers le bas de qq pixels.


 
Je vais peut-être faire ça vu que je m'en sors pas avec DrawText là. Par contre je comprend pas comment tu fais pour mettre à la ligne avec TextOut.
 
T'a pas un bout de code à montrer? :)

n°1245986
rufo
Pas me confondre avec Lycos!
Posté le 15-11-2005 à 13:59:57  profilanswer
 

bkadoum a écrit :

Je vais peut-être faire ça vu que je m'en sors pas avec DrawText là. Par contre je comprend pas comment tu fais pour mettre à la ligne avec TextOut.
 
T'a pas un bout de code à montrer? :)


 
pas là, car mon code est chez moi. Mais textout a comme paramètres x et y. Donc tu fais plusieurs textout() de sous chaînes de ta chaîne principale et tu décales vers le bas la coordonnée y.
 
ex :  

Code :
  1. chaîne principale = "un texte qui est très long" devient
  2. textout("un texte", 50, 100, ...)
  3. textout("qui est", 50, 125, ...)
  4. textout("très long", 50, 150, ...)


Message édité par rufo le 15-11-2005 à 14:00:16

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Charger un gros textes dans une surface (DirectX)

 

Sujets relatifs
une question qui peu rapporter groserreur insertion gros bloc de texte dans mySQL
Dessiner sur une surface directx d'une apllication externeou telecharger les anciens sdk de directx?
Sauver et Charger des donnéesC# et DirectX Managed -- pb de FPS --
Textes dynamiques chinois/français [resolu]gros problème sur des algos
problème avec directx 9 et visual c++ 6 
Plus de sujets relatifs à : Charger un gros textes dans une surface (DirectX)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR