Texte vertical

olivier555olivier555 Membre
00:40 modifié dans API AppKit #1
Bonjour!
Savez-vous comment afficher du texte verticalement dans une vue (avec la routine drawAtPoint)?
Merci!

Réponses

  • muqaddarmuqaddar Administrateur
    décembre 2005 modifié #2
    En gros comme ça :

    [NSGraphicsContext saveGraphicsState];<br />	NSAffineTransform *affineTransform = [NSAffineTransform transform];<br />	[affineTransform translateXBy: point.x yBy: point.y];<br />	[affineTransform rotateByDegrees: 90.0];<br />	[affineTransform concat];<br /><br />	// Draw Text<br />	[textToDraw drawAtPoint:point withAttributes:currentAtr];<br />	<br />	[NSGraphicsContext restoreGraphicsState];<br />
    


    A savoir :
    - créer un nouveau contexte graphic
    - transformer le contexte en cours grâce à  NSAffinTransform
    - appliquer la transformation pour ce contexte
    - écrire le texte
    - restaurer le contexte graphique

    Attention à  translate... c'est de ça que dépend le centre de ta rotation dans ta vue, et c'est un peu le bordel de le ramener en bas à  gauche de la première lettre du texte à  écrire.
  • olivier555olivier555 Membre
    00:40 modifié #3
    Merci beaucoup! :)
  • muqaddarmuqaddar Administrateur
    00:40 modifié #4
    Tu t'en es sorti Olivier ?
    Parce que moi je galère pour ma rotation. Pourtant je redéfinis le coin du texte bas-gauche comme axe de rotation...
  • maestricmaestric Membre
    00:40 modifié #5
    [affineTransform translateXBy: point.x yBy: point.y];
    

    Ca translate l'origine de ta vue.

    [affineTransform rotateByDegrees: 90.0];
    

    Ca tourne ta vue de 90 degrés.

    [textToDraw drawAtPoint:point withAttributes:currentAtr];
    

    Les coordonnées de ton point n'ont donc plus de "sens" dans cette vue transformée.
    En dessinant au point (0,0), ça devrait te donner quelque chose proche du résultat que tu désires. :)
Connectez-vous ou Inscrivez-vous pour répondre.