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

Delphi Discussion :

autosize de la font sur un canvas


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut autosize de la font sur un canvas
    Bonjours tous,

    [Delphi RIO]
    [W10]

    Tout est dans le titre.
    Pour expliquer ma demande => Imaginons un rectangle dessiné sur une form, et ce rectangle se resize automatiquement quand je resize la form. Le calcul de la taille de rectangle se recalcule et se redessine dans l’événement "FormResize" j'écris un texte dans ce rectangle, et je voudrais quand je resize le rectangle (la form) que les proportions du texte par apport au rectangle reste les mêmes => en fait cela reviens à modifier la taille de la font du texte en fonction de la taille du rectangle.

    La solution pourrait être d'incrémenter ou de décrémenter le canvas.font.size du texte, de mesurer la nouvelle taille du texte à chaque changement de taille du rectangle et reboucler cela jusqu'à ce que le texte soit proportionnel au rectangle.

    1. Existe-t-il une meilleure solution ?
    2. Existe-t-il une solution pour bloquer l'affichage de mon Canvas (du genre BeginUpdate et EndUpdate) pour qu'il ne s'affiche qu'une fois la taille de la font est trouvé, pour éviter de voir le calcul de la recherche de la taille de la font.
    Sinon comme mon canvas est celui d'un Timage, je peux le rendre invisible durant le traitement.

    merci a vous ,pour vos remarques ou idées.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Pour un projet devant être visible de loin, j'ai procédé ainsi, une simple règle de trois pour calculer la taille de la fonte en fonction du la largeur du texte, sa hauteur et les dimensions de la zone de texte
    - https://www.developpez.net/forums/d1.../#post10295804
    J'ai eu plusieurs variantes, la taille de la fonte étant aussi choisi selon une typologie de message que je savais d'avance court, moyen, long.

    tu n'as pas besoin d'incrémenter, c'est juste une division entre dimension de la zone de texte et la largeur du texte (pense au multiligne aussi)
    Le ratio, je l'avais fixé en dur mais il s'obtient par la division entre la taille moyenne de Wq et de Font.Size

    J'avais aussi pris en compte le Zoom Windows, ce module gérait à l'époque donc le 100, 125, 150, 175 et 200% de Windows et ajoutait jusqu'à 300.
    C'était pour un écran encore plus minimaliste


    Dans un autre programme, un code ultra simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FScanDipatchMagDestination.Font.Size := -(FScanDipatchMagDestination.Height div 3 * 2);
    Cela affichait en très grand 'N/A' ou '000' à '999'
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre très actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Par défaut
    Utiliser Font.Height au lieu de Font.Size pour calculer la hauteur proportionnellement avec celle de la fiche, sinon tu peux jouer sur SetWindowExtEx et SetViewportExtEx pour créer un zoom en quelque sorte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Font sur le serveur distant
    Par feed_our_vision dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 12/01/2006, 07h51
  2. Font sur JOptionPane et JFileChooser
    Par Solovely dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/11/2005, 01h49
  3. Ecriture verticale sur un canvas
    Par blaiseac dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2005, 21h59
  4. Ombres portées sur un canvas
    Par pifou02 dans le forum Langage
    Réponses: 2
    Dernier message: 23/11/2003, 19h03
  5. Comment mettre le curseur d'un Memo sur le Canvas d'une Form ?
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2003, 13h24

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