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

  FORUM HardWare.fr
  Programmation

  Centrer et clipper du texte avec DirectX

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Centrer et clipper du texte avec DirectX

n°121887
Deckards
Posté le 05-04-2002 à 14:39:20  profilanswer
 

La gestion du texte est un peu compliquée avec Windows....
Pour afficher du texte en 2D avec DirectX j'utilise l'interface ID3DXFont. Je choisis les caractéristiques de la fonte avec D3DXCreateFontIndirect() et je dessine du texte avec DrawText().
Le problème c'est que DirectX permet de centrer le texte OU de le clipper....
Dans DrawText() y a un paramètre de type RECT qui définis la zone ou le texte va être affiché. Il est clippé si il dépasse. Si on utilise le flag DT_CENTER, le texte sera centré en fonction du paramètre RECT.
Mais si on veut clipper le texte ET le centrer par rapport à d'autre coordonnées je vois pas comment faire :(
Il semble ici uniquement possible de centrer et clipper le texte par rapport à l'unique paramètre RECT ce qui rend impossible certaines manip :-/


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
mood
Publicité
Posté le 05-04-2002 à 14:39:20  profilanswer
 

n°121951
LeGreg
Posté le 05-04-2002 à 15:08:06  profilanswer
 

ID3DXFont c'est pas genial
pour afficher du texte en 2D.
(c'est fait pour avoir des fontes 3D)
 
Regarde plutot sur les exemples du SDK
il y a une classe exemple CD3DFont qui affiche
du texte 2D en 3D.
Ceci dit ils laissent le gros du boulot
(formatage du texte) au programmeur.
 
A+
LEGREG

n°122005
Deckards
Posté le 05-04-2002 à 15:41:03  profilanswer
 

Mmh je pensait l'inverse.
La classe CD3DFont du framework me semblait appropriée pour la 3D avec rendu sur textures et autres spécifités D3D.
Et en plus je crois qu'il n'est pas possible de clipper du tout avec CD3DFont :(


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°122071
LeGreg
Posté le 05-04-2002 à 16:14:56  profilanswer
 

D3DXfont est plus complete mais plutot lente  
(donc peu utilisable pour afficher
du texte 2D qui doit rester une operation simple).
 
Sinon qu'appelles-tu centrer sur d'autres coordonnees?
 
LEGREG

 

[jfdsdjhfuetppo]--Message édité par legreg--[/jfdsdjhfuetppo]

n°122119
Deckards
Posté le 05-04-2002 à 16:41:27  profilanswer
 

Comme un petit schéma est plus clair qu'une explication confuse ;)
Ici le tete est centré par rapport à A et B mais doit être clippé par rapport à A et C.
Sans Clipping:
    A|   TEXTE   |B
    A|     |C      |
      |     |       |
      |     |       |
 
Avec Clipping:
    A|   TE       |B
    A|     |C      |
      |     |       |
      |     |       |

 

[jfdsdjhfuetppo]--Message édité par Deckards--[/jfdsdjhfuetppo]


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°122138
LeGreg
Posté le 05-04-2002 à 16:47:39  profilanswer
 

ah oui c'est pervers :(
 
Desole pas d'info la dessus
(a part de faire ton formatage toi-meme
mais c'est une non-solution, je te l'accorde)
 
LEGREG

n°122176
Deckards
Posté le 05-04-2002 à 17:04:41  profilanswer
 

Je sais qu'il est possible d'associer une fonte au Backbuffer, d'obtenir son DC et ainsi d'appeller GetTextMetrics... mais lourd très lourd :(


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°122419
Deckards
Posté le 05-04-2002 à 23:58:17  profilanswer
 

Monte petit post ^^


---------------
Une nouvelle vie vous attend sur les mondes colonisés.
n°122422
youdontcar​e
Posté le 06-04-2002 à 00:15:14  profilanswer
 

tu peux appeler DrawText() avec DT_CALCRECT pour obtenir la taille de ton texte dans un RECT, rectSize.  
 
pour afficher ton texte centré, tu rappelles DrawText() avec dans le rect  
 
// centrage
rect.left = xA + (xB - xA - rectSize.right)/2;  
// clip droit
rect.right = xC


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

  Centrer et clipper du texte avec DirectX

 

Sujets relatifs
Comment faire défiler du texte en HTML?Afficher une ligne precise ds un fichier texte???????
[C]Comment changer la couleur d'un texte.Afficher une partie de texte dans un fichier...precision!!!
type=radio comment checker sur le texte ????[DirectX] mélanger 2D et 3D
SDK DirectX - probleme avec D3D[Clipper] Y a-t-il encore qq1 qui utilise ce langage...
[SQL] Convertir une donnée numérique en texte et/ou en date[ MySQL ] Comment faire pour qu' un texte en remplace un autre...
Plus de sujets relatifs à : Centrer et clipper du texte avec DirectX


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