+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Nouveau Membre du Club
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : octobre 2011
    Messages : 108
    Points : 27
    Points
    27

    Par défaut Ajuster la taille du text d'un label en fonction de la taille du label

    Bonsoir.

    Toujours dans mon appli sous visual basic 2010 expresse, je cherche à adapter la taille du texte en fonction de la taille du label.

    Je m'explique :

    J'ai une fenetre qui s'ouvre en plein écran dans lequel de trouve un Label. Je l'ai encré dans les 4 directions pour qu'il s'adapte à la fenetre quelque soit la résolution de l'écran.

    Malheureursement, en fonction des différentes taille d'écran sur lesquelles j'ai testé ma fenetre, la taille de la police est toujours la même et suivant la résolution, le visuel n'est pas top top.

    J'ai donc pensé qu'il était peut être possible que la taille du texte dans le label s'adapte à la taille de celui-ci mais je ne sais pas si c'est possible.

    Par conséquent, je me tourne une nouvelle fois vers vous pour savoir si cela est configurable.

    Merci par avance pour vosréponses.

    @+ Martipit

    PS : En attendant je continu à chercehr avec l'ami google....

  2. #2
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2011
    Messages : 141
    Points : 175
    Points
    175

    Par défaut

    Ce que tu pourrais faire, c'est créer un event onResize (ne connaissant pas VB, je ne sais pas si les events fonctionnent de la même façon qu'en C#) et manuellement définir une taille de police en fonction de la taille de la fenêtre au moment où l'event est déclenché.

  3. #3
    Membre chevronné

    Homme Profil pro
    Inscrit en
    mars 2012
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : mars 2012
    Messages : 489
    Points : 697
    Points
    697

    Par défaut

    Salut

    la taille de la police est toujours la même et suivant la résolution, le visuel n'est pas top top.
    la taille de la police d'un control ne change pas automatiquement en fonction
    de la résolution de l'écran

    si tu as defini le font de ton label à arial 20 il sera toujours à arial 20
    quelque soit la résolution de l'écran
    ainsi que la taille du label si ton label est de taille width =100 et height = 10
    restera toujours la meme taille
    la taille est mesurée en pixel bien sur en cm cela change
    100 pixels sous résolution A * B = K cm
    100 pixels sous résolution C* D = L cm
    plus la résolution est grande plus la taille en cm est petite

    maintenant que veux tu faire avec ton label ?

  4. #4
    Expert Confirmé Sénior Avatar de Pol63
    Homme Profil pro
    Développeur .NET / DBA SQL SERVER
    Inscrit en
    avril 2007
    Messages
    11 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur .NET / DBA SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 11 353
    Points : 18 816
    Points
    18 816

    Par défaut

    ce qu'il veut c'est clair c'est que quelque soit la résolution l'application ait le même look et les même proportions

    pour ca le mieux est de se tourner vers wpf
    je ne sais pas exactement comment ca se passe mais je sais qu'on peut faire en sorte que tout s'agrandisse, y compris le texte

  5. #5
    Nouveau Membre du Club
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : octobre 2011
    Messages : 108
    Points : 27
    Points
    27

    Par défaut

    salut

    Polo63 a tout compris pour ce que je voudrais faire.

    En fait, il s'agit d'une fenetre qui doit annoncer le prochain interprète lors de soirées karaokés. Cette fenetre s'ouvre en plein écran sur le second écran de mon pc.

    Celle-ci se compose d'un Label dont le texte est paramétrable par l'utilisateur. Celui ci doit toujours se trouver en haut de la fenetre et centré sur celle-ci, sachant que l'utilisateur peut paramétrer le type de police et sa couleur

    En dessous et justifié à gauche, on trouve un autre label prédéfini au niveau du texte qui annonce le prochain. L'utilisateur peut agir sur la police et la couleur

    En dessous et centré, le nom de l'interprète. Dans celui-ci le texte n'est jamais le même et pour cause, tout le monde n'a pas le même nom et le même prénom. Là encore l'utilisater peut agir sur la police et la couleur

    En dessous et justifié à gauche on trouve un autre Label qui annonce le titre qui va être chanté. L'utilisateur peut Modifier le type de police ainsi que sa couleur

    Et enfin en dessous, Le titre chanté. Ce texte est modifiable puisqu'il ne sera jamais le même. là aussi l'utilisateur peut agir sur le type de police et la couleur de ceele-ci.

    Voilà pour ce que je voudrait faire.

    Maintenant les soucis que je rencontres sont les suivants :
    - L'alignement en fonction de la taille de la fenêtre En effet, aucune configuration n'a la même résolution et pour les affichages étendu, il en est de même.
    - Les retours à la ligne dans les labels si le texte dépasse soit la largeur prédéfinie du label soit la largeur de la fenetre.

    J'ai pensé à plusieurs solutions :
    1 Ajuster la taille de la police à la taille du label qui sera prédéfini à l'avance
    2 Pour le Label titre, qui risque fort d'être trop long pour la largeur de l'écran, j'ai pensé faire défiler le texte.


    Pour ce qui est de la première solution, je n'ai rien trouver en farfouillant sur le net.

    Pour la seconde j'ai bien trouvé quelques pistes rien qui me convienne vraiment.

    C'est pour cela que je me trourne vers vous.

    Voilà. @+ Martipit

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 826
    Points : 1 613
    Points
    1 613

    Par défaut

    Disons que le problème principal pour l'augmentation de la taille d'un texte en fonction de la résolution, c'est qu'il est difficile de pouvoir transformer un text avec sa police en une taille x,y (vu que chaque lettre n'a pas la même dimension...).

    Peut être qu'avec un label virtuel servant à simuler l'affichage pour récupérer la taille "effective" et une approche par tatonnement tu arriveras à quelque chose (On essaye avec plusieurs police jusqu'à obtenir la taille la plus proche du maximum).

    Néanmoins il est possible de déterminer la taille nécessaire pour afficher le texte en fonction de sa police (le label il y arrive bien lui....), par contre j'ignore quel fonction il utilise (un petit coup de décompilateur sur les assembly winforms ou une recherche sur google devrait donner une réponse à cette question.

  7. #7
    Expert Confirmé Sénior Avatar de Pol63
    Homme Profil pro
    Développeur .NET / DBA SQL SERVER
    Inscrit en
    avril 2007
    Messages
    11 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur .NET / DBA SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 11 353
    Points : 18 816
    Points
    18 816

    Par défaut

    Citation Envoyé par sinople Voir le message
    il est difficile de pouvoir transformer un text avec sa police en une taille x,y (vu que chaque lettre n'a pas la même dimension...).
    Citation Envoyé par sinople Voir le message
    Néanmoins il est possible de déterminer la taille nécessaire pour afficher le texte en fonction de sa police
    un peu contradictoire non ?

    ungraphics.measurestring
    ou system.windows.forms.textrenderer.measuretext
    (ou l'inverse ^^)

    par contre je le répète en wpf avec un viewbox tout s'agrandit y compris le texte, ca évite de coder des measure dans tous les sens

  8. #8
    Nouveau Membre du Club
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : octobre 2011
    Messages : 108
    Points : 27
    Points
    27

    Par défaut

    Re salut

    En fouillant, j'ai trouvé une solution qui me parait un bon compromis.

    Sur ma fenetre d'accueil, j'ai ajouté 2 textBox dans lesquels il est demandé de mentionner la largeur et la hauteur de la fenetre à ouvrir dans le bureau étendu. (En fait la résolution de celui-ci). A partir de là, l'utilisateur clique sur un bouton. Une fenetre dans laquelle il y a toutes les commandes pour manipuler les tailles de caratères et les couleurs est ouverte. Ma fameuse fenêtre dont on a donné les dimensions est ouverte également et on voit de suite la mise en forme à l'echelle 1/1 puisqu'elle est à la bonne résolution.

    J'ai trouvé un code sur le net qui permet de cliquer et déplacer chacun de mes labels sur cette fameuse fenetre.

    Le voici :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub Annonce_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Defini les objets déplaçable
            SetMoveable(LabTextParam)
            SetMoveable(LabOnAppel)
            SetMoveable(LabNomInterprete)
            SetMoveable(LabTitre)
            SetMoveable(LabNomTitre)
        End Sub
     
        Dim depart As Point
        Dim deplacement As Boolean = False
     
        Private Sub SetMoveable(ByRef ctl As Control)
            AddHandler ctl.MouseDown, AddressOf Generic_MouseDown
            AddHandler ctl.MouseMove, AddressOf Generic_MouseMove
            AddHandler ctl.MouseUp, AddressOf Generic_MouseUp
        End Sub
     
        Private Sub Generic_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            'Mémorisation du point de départ
            depart = e.Location
            deplacement = True
        End Sub
     
        Private Sub Generic_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            If deplacement Then
                Dim bt As Control = DirectCast(sender, Control)
                Dim loc As Point
                loc.X = bt.Location.X + e.Location.X - depart.X
                loc.Y = bt.Location.Y + e.Location.Y - depart.Y
     
                'Chargement de la nouvelle position du control
                bt.Location = loc
            End If
        End Sub
     
        Private Sub Generic_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
            deplacement = False
        End Sub
    Jusque là, nickel. En cliquant sur chacun de mes labels je peux les déplacer à ma guise et lorsque je lâche la souris il est à sa place.

    En ayant configuré ma taille de fenetre et ce système, l'utilisateur place tout cela au bon endroit une fois pour toutes et voilà sa config est comme il le souhaite pour chacune de ses utilisations et quelque soit la résolution de son bureau étendu !!!

    Seul truc qui me manque maintenant, Et oui c'est comme tout, y a toujours un mais , c'est de sauvegarder la nouvelle position de chacun de mes labels avec le systeme "settings" et là, pour l'instant, je ne vois pas comment faire. mais je poursuit mes recherches.

    Si vous avez un 'tit bout de code à ce sujet, je suis prenneur.

    Merci par avance.

    @+ Martipit

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 826
    Points : 1 613
    Points
    1 613

    Par défaut

    Citation Envoyé par Pol63 Voir le message
    un peu contradictoire non ?

    ungraphics.measurestring
    ou system.windows.forms.textrenderer.measuretext
    (ou l'inverse ^^)

    par contre je le répète en wpf avec un viewbox tout s'agrandit y compris le texte, ca évite de coder des measure dans tous les sens

    Ah ben merci pour les fonctions, je garde ça dans un coin au cas où...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •