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

 


Dernière réponse
Sujet : Centrer et clipper du texte avec DirectX
youdontcare 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
youdontcare 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
Deckards Monte petit post ^^
Deckards 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 :(
LeGreg 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
Deckards 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]

LeGreg 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]

Deckards 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 :(
LeGreg 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
Deckards 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 :-/

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)