Comment "Scaler" un texte ?

MickMick Membre
17:05 modifié dans API AppKit #1
Bonjour,

J'ai une NSAttributedString complexe (basée sur une NSTextTable). J'affiche cette attributedString grâce à  une NSTextView. Pas de problème jusque là . Mais j'aimerais pouvoir (pour cause d'impression) resizer l'ensemble pour que "ça tienne" sur une largeur de page d'impression. Et là , je ne sais pas comment faire du tout...

Je précise que mes textView sont ajoutées à  une custom view dont la taille est évidemment trop grande pour la page. De ce fait j'ai tenté d'utiliser un NSAffineTransform sans succès : la textView déborde quand même : elle ignore le NSAffineTransform


Quelqu'un a-t-il une expérience en la matière ?...

Réponses

  • CéroceCéroce Membre, Modérateur
    17:05 modifié #2
    Le texte possède sa propre matrice de transformation.
  • MickMick Membre
    17:05 modifié #3
    Bonjour Céroce,

    Comment mettre cela en oe“uvre techniquement ?
    J'ai bidouillé un truc : à  la création de l'attributedString, je dimensionne la textTable en fonction de la taille du papier courante dans le printInfo, et j'attribue une taille de font selon le rapport d'échelle (je suis en train de tâtonner en ce moment pour trouver le réglage "optimal").

    Mais si un jour j'ai une vue relativement complexe (des dessins, des textView..), comment faire en sorte de "scaler" l'ensemble à  la manière d'une NSAffineTransform (xBy:yBy) afin de gérer l'impression sans sortir une usine à  gaz ? Pour l'instant, mis à  part couper le drawRect en deux et tester si c'est à  l'écran ou sur l'imprimante qu'oin veut écrire, et donc écrire deux codes de tracé, je ne vois pas de solution plus "simple".. Ca doit être possible puisque le système le fait lui-même quand on demande "2 pages par feuille" à  l'impression !
  • CéroceCéroce Membre, Modérateur
    septembre 2010 modifié #4
    Je n'en sais pas plus.
    J'ai toujours lu qu'il était difficile d'imprimer une NSTableView ou même les NSTextViews. Beaucoup de gens redessinent eux-mêmes la table pour cette raison. D'autant plus que ça te donne d'avantage de contrôle sur l'aspect final, et qu'on veut rarement avoir exactement la même représentation à  l'écran et sur le papier.
  • MickMick Membre
    17:05 modifié #5
    Ok,
    Effectivement ça paraà®t compliqué. C'est quand même étonnatn vu que c'est quand même une tâche relativement courante !

    Merci tout de même. Je vais me contenter de ma bidouille dans le drawRect..
  • laudemalaudema Membre
    17:05 modifié #6
    Que donne la taille du NSTextContainer de ta NSTextView ?
    //!à‰crit dans Safari<br />NSSize cSize = [[taTextView textContainer] containerSize];<br />printf (&quot;width : %f, height: %f&#092;n&quot;, cSize.width, cSize.height);<br />
    

    Si elle est trop large tu peux la définir via setContainerSize en prenant par exemple la surface imprimable.
Connectez-vous ou Inscrivez-vous pour répondre.