Centrer et clipper du texte avec DirectX - Programmation
Marsh Posté le 05-04-2002 à 15:08:06
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
Marsh Posté le 05-04-2002 à 15:41:03
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
Marsh Posté le 05-04-2002 à 16:14:56
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]
Marsh Posté le 05-04-2002 à 16:41:27
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]
Marsh Posté le 05-04-2002 à 16:47:39
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
Marsh Posté le 05-04-2002 à 17:04:41
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
Marsh Posté le 05-04-2002 à 23:58:17
Monte petit post ^^
Marsh Posté le 06-04-2002 à 00:15:14
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
Marsh Posté le 05-04-2002 à 14:39:20
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.