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

VB.NET Discussion :

La taille d'un string


Sujet :

VB.NET

  1. #1
    Membre éprouvé

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut La taille d'un string
    Bonjour

    Pourquoi si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Dim size As SizeF
       size = BufferredGraphic.Graphics.MeasureString("     ", New Font("AR BERKLEY", 22, FontStyle.Bold, GraphicsUnit.Pixel))
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size = BufferredGraphic.Graphics.MeasureString("           ", New Font("AR BERKLEY", 22, FontStyle.Bold, GraphicsUnit.Pixel))
    le size.width a la meme valeur ?

    merci

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Suite à quelques recherches, il faudrait a priori utiliser une des surcharges prenant un StringFormat afin de spécifier que les espaces ne sont pas "trimmés"
    Après j'ai fait quelques rapides tests, et j'obtiens des width de 0 sans trop savoir pourquoi ; raison pour laquelle personnellement, j'utiliserais plutôt TextRenderer.MeasureText qui semble (me) donner de meilleurs résultats.
    .
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Membre éprouvé

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    encore plus bizarre
    car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size = BufferredGraphic.Graphics.MeasureString(" ", New Font("AR BERKLEY", 24, FontStyle.Bold, GraphicsUnit.Pixel))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size = TextRenderer.MeasureText(" ", New Font("AR BERKLEY", 24, FontStyle.Bold, GraphicsUnit.Pixel))
    donne deux valeurs différentes
    aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size = BufferredGraphic.Graphics.MeasureString("B", New Font("AR BERKLEY", 24, FontStyle.Bold, GraphicsUnit.Pixel))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size = TextRenderer.MeasureText("B", New Font("AR BERKLEY", 24, FontStyle.Bold, GraphicsUnit.Pixel))
    donne deux valeurs différentes

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    J'avais aussi remarqué ces différences.
    Voir : http://stackoverflow.com/questions/1...xpected-number
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    il faut utiliser stringformat avec options trailing ...
    -dans measure
    -dans drawstring

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Public Class frmFont
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim gr As Graphics = Me.CreateGraphics
            Dim fnt As Font
            Dim ss As SizeF
            Dim S As String
            Dim location As Point
            Dim fmt As StringFormat = New StringFormat(StringFormat.GenericTypographic)
            fmt.FormatFlags = StringFormatFlags.MeasureTrailingSpaces
     
     
            'cas 1
            S = "     "
            fnt = New Font("Garamond", 22, FontStyle.Bold)
            ss = gr.MeasureString(S, fnt, 0, fmt)
     
            '  rectangle 
            location = New Point(100.0, 100.0)
            Dim rect As New Rectangle(location.X, location.Y, ss.Width, ss.Height)
     
            gr.DrawRectangle(New Pen(Color.Yellow, 1),
                    rect)
     
            '  string
            gr.DrawString(S,
                          fnt,
                          Brushes.Black,
                          New RectangleF(location, ss), fmt)
     
            'cas 2
            S = "           ".ToString
            fnt = New Font("Garamond", 22, FontStyle.Bold)
            ss = gr.MeasureString(S, fnt, 0, fmt)
     
            ' rectangle.
            location = New Point(200.0, 200.0)
            rect = New Rectangle(location.X, location.Y, ss.Width, ss.Height)
            gr.DrawRectangle(New Pen(Color.DarkBlue, 1),
                             rect)
     
            ' string to screen.
            gr.DrawString(S,
                          fnt,
                          Brushes.Black,
                         New RectangleF(location, ss), fmt)
     
        End Sub
    End Class
    bon code......

  6. #6
    Membre éprouvé

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Merci Mabrouky
    il y a une nette différence

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

Discussions similaires

  1. taille d'un string
    Par lanfeust42 dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2006, 11h57
  2. [JS] Taille d'une string en px
    Par Shivan dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/07/2006, 14h16
  3. modifier la taille d'un String
    Par barthelus76 dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2006, 13h21
  4. [JTABLE] taille dynamique = F°(String.length)
    Par tripop dans le forum Composants
    Réponses: 15
    Dernier message: 13/01/2005, 17h07
  5. [JDBC] Forcer la taille d'une string
    Par julio123 dans le forum JDBC
    Réponses: 4
    Dernier message: 10/06/2004, 09h43

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