IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

[Direct3D] Rotation de texte


Sujet :

DirectX

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut [Direct3D] Rotation de texte
    Salut,

    J'aurais besoin d'orienter mon texte (2D) verticalement au lieu d'horizontalement. Malheureusement on dirait que les transformations ne s'appliquent pas sur un "DrawText". Y a t-il un moyen plus simple que de créer une surface, d'écrire dessus, de lui appliquer une rotation et de la recopier vers le backbuffer ?

    Merci

  2. #2
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    Salut,

    Il faut que tu utilises les sprites avec des matrices de rotation.
    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    m_pTextSprite->SetTransform(&matTransfo);
    m_pTextSprite->Begin(D3DXSPRITE_OBJECTSPACE);
    pD3DXFont->DrawText(m_pTextSprite,Text,(int)(strlen(Text)),&TextRect,Format|DT_EXPANDTABS,&Color);
    m_pTextSprite->End();

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par titoine1978
    Salut,

    Il faut que tu utilises les sprites avec des matrices de rotation.
    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    m_pTextSprite->SetTransform(&matTransfo);
    m_pTextSprite->Begin(D3DXSPRITE_OBJECTSPACE);
    pD3DXFont->DrawText(m_pTextSprite,Text,(int)(strlen(Text)),&TextRect,Format|DT_EXPANDTABS,&Color);
    m_pTextSprite->End();

    Merci j'avais pas eu cette idée. Ca devrait marcher. Par contre j'ai remarqué que mon sprite ne marche pas quand j'utilise D3DXSPRITE_OBJECTSPACE, ça veut dire quoi cette option ?

  4. #4
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    Voilà ce que MSDN dit sur D3DXSPRITE_OBJECTSPACE

    The world, view, and projection transforms are not modified. The transforms currently set to the device are used to transform the sprites when the batched sprites are drawn (when ID3DXSprite::Flush or ID3DXSprite::End is called). If this flag is not specified, then world, view, and projection transforms are modified so that sprites are drawn in screen-space coordinates.

    En gros c'est pour que le sprite soit dans le même système de coordonnées que tu as définis et non pas dans le système de coordonnées écran. J'utilisais ca parceque ca m'arrangeais, mais tu peux certainement le retirer.

  5. #5
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Points : 57
    Points
    57
    Par défaut
    J'utilise VB.Net et DirectX 9, je voulais également spécifier un angle à mon texte pour qu'il ne soit pas inscrit à l'horizontale. J'ai tenté d'utiliser ce qui a été donné titoine mais mon texte n'apparaît pas, et même que j'obtient parfois une erreur dans mon application.

    Dans le fond, mon texte si je le laisse à l'horizontale, apparaît à la bonne place, tout est ok. Alors, pour supposons qu'il soit à la verticale (tourné de 90* degré) j'ai passé de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .DrawText(nothing, lbl.Text, r, lbl.GlobalAlignment, lbl.Color)
    à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim spr As New Sprite(dev)
    spr.Transform.RotateZ(Math.PI / 2)
    spr.Begin(SpriteFlags.ObjectSpace)
    .DrawText(spr, lbl.Text, r, lbl.GlobalAlignment, lbl.Color)
    spr.End()
    Et le texte n'affiche plus du tout. Même que lorsque je fais des translation de mon image, je fini par obtenir un erreur dans mon application et ça souligne la ligne: spr.Begon(SpriteFlags.ObjectSpace).

    Merci de votre aide.

Discussions similaires

  1. [Gimp] Rotation de texte
    Par laurentSc dans le forum Imagerie
    Réponses: 0
    Dernier message: 18/04/2008, 10h00
  2. probleme de rotation de texte
    Par Kobe70 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/03/2008, 14h36
  3. Tcanvas Rotation de texte et impression
    Par kilog dans le forum Delphi
    Réponses: 2
    Dernier message: 21/08/2006, 10h42
  4. [TLabel] rotation du text dans un label
    Par Bourak dans le forum Delphi
    Réponses: 1
    Dernier message: 16/05/2006, 18h08
  5. Rotation de texte et impression
    Par rizom dans le forum Langage
    Réponses: 6
    Dernier message: 16/11/2004, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo