Calcul du font.size

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 11 oct. 2011 à 11:30
 Utilisateur anonyme - 12 oct. 2011 à 20:36
Bonjour
je dois écrir une application qui affiche des
message
comment savoir quel font.size utiliser pour
un écran de grande taille
par ex j'utilise arial.size = 12 pour un écran
de 15 inches
peut on calculer à partir de ses données
le font.size pour un écran géant de façon que
le text peut se lire à distance

Merci

16 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 oct. 2011 à 13:30
Salut

Oui, c'est faisable en prenant en compte la taille de l'écran, c'est à dire sa dimension ET sa définition graphique.
Reste à trouver comment récupérer ces infos. Voir Screen.GetWorkingArea + dans l'aide "monitor size"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 oct. 2011 à 14:30
Bonjour, ShayW

Les choses ne sont malheureusement pas aussi simples qu'elle le paraissent à première vue.

Récupérer certaines informations (notamment celles que te signale jack) permet de définir un coefficient k de "correction". Mais ... cette correction peut-elle s'appliquer à tout ? ====>>

Bien qu'il s'agisse là de VB6, la lecture et notamment sa deuxième page dde cette discussion récente t'est conseillée.
Les choses se compliquent encore plus lorsque ce que tu affiches (contrôles différents) utilisent des polices différentes.
Commence par lire la discussion vers laquelle je te renvoies. On en discute ensuite, si tu le souhaites.
Amitiés.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 oct. 2011 à 20:07
Bonjour tout le monde

Oui compliqué pour vraie dire je comprend de --

tout d'abord pour comprendre
la page du site vbfrance a un font.size définit
comment se fait il dans un pocket pc ,ipad
la page entière est visible bien que la taille
de l'écran est petit
ou encore
par ex font.name ="Arial" ,font.size = 12
dans un ipad ,écran 16 inches et écran géant
un texte définit par ce font sera apperçu de
la meme façon ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 oct. 2011 à 20:21
Hé oui !
Comment ? par utilisation d'un "zoom" (comme pour celui de Excel, comme je le disais dans la discussion que je t'ai invité à lire).
Le principe est grosso-modo le suivant : on offre à l'utilisateur une image "stretchée" en + ou en -. Lorsque l'utilisateur se déplace avec sa souris dans l'image "stretchée", il "pointe" en fait sur la partie correspondante de l'original (la "vraie chose"). Lorsqu'il clique sur l'image "stretchée" d'un contrôle, il déclenche un click sur le contrôle correspondant. Etc ...
Voilà !
Et tu trouves sur le marché, moyennant de 15 à environ 60 euros (selon le degré de performance) des "resizers" qui font cela très bien. Ce sont en général des OCX qu'il suffit de placer dans ton application en mode création. Ils relèvent en mode création la définition de l'écran de développement. En mode exécution, ils relèvent la définition de l'écran d'exécution ===>> ils en tirent un coefficient k (en fait : 2 : un pour la hauteur et l'autre pour la largeur) et l'appliquent en mode exécution.
La plupart d'entre eux ne nécessitent aucun code de développement. Ils "relèvent" et "appliquent".

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 oct. 2011 à 20:29
Et tu sais quoi, encore ?
Lorsque plussoyer et/ou plussoir auront été acceptés (comme déjà Vasistas, PQ et pécu pour le papier machin),j ils accepteront ipso facto (ah !tiens ! je remarque que le correcteur orthographique dénonce "ipso" ... étrange !) minussoyer

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 oct. 2011 à 20:38
le message précédent, destiné à une autre discussion et arrivé ici par erreur/gros doigts n'a rien à voir dans la présente discussion ! 1A supprimer, s'il vous-plait


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
11 oct. 2011 à 22:07
Bonsoir ShayW,

L'objet Graphics propose une méthode (MeasureString) très pratique pour "Mesurer" la longueur d'un string d'après sa police.

La classe Screen te permet de connaître la largeur d'affichage.

Avec une boucle, tu peux obtenir la taille de la police à utiliser pour remplir l'écran.

Je ne suis pas un spécialiste mais c'est tout ce que j'ai à te proposer :

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.WindowState = FormWindowState.Maximized
    End Sub

    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim texte As String = "test largeur"
        Dim l As Integer = Screen.PrimaryScreen.WorkingArea.Width
        Dim x As Integer
        Do
            x += 1
        Loop Until e.Graphics.MeasureString(texte, _
                    New Font("Arial", x, FontStyle.Regular, GraphicsUnit.Point)).Width >= l
        e.Graphics.DrawString(texte, New Font("Arial", x), Brushes.Red, 0, 0)
    End Sub


Bonne prog.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 oct. 2011 à 08:30
Bonjour, banana32,

Avec une boucle, tu peux obtenir la taille de la police à utiliser pour remplir l'écran.

et le code qui suit ===>>
On peut de cette manière (comme sous VB6) déterminer la plus grande taille acceptable pour une largeur donnée.
Mais ce sera là hélas tout
On ne peut palier les difficultés résultant de la police elle-même (ce que j'appelle sa "flexibilité")
Imagine que tu aies à passer de la taille 15 à la taille 45, dans une boucle de "satisfaction" de 1 par 1. Imagine maintenant que la police n'ait rien de prévu entre les taille 24 et 50 (je fais exprès d'exagérer). toutes les tailles entre 16 et 45 seront rejetées et on restera à 15 jusqu'à arriver à 50 qui, elle, fera "déborder" !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 oct. 2011 à 08:34
correction, bien sûr :
toutes les tailles entre 25 et 45 seront rejetées et on restera à 24 jusqu'à arriver à 50 qui, elle, fera "déborder" !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 oct. 2011 à 08:50
Exemple avec Arial (et ce n'est pas la pire des polices) :
Au départ : une résolution horizontale de 800 sur un petit écran et une police de 20
On passe à un écran d'une largeur triple (physiquement( et en résolution) ===>>
But à atteindre : une taille de 60
On n'atteindra jamais cette taille et on aura à choisir (pauvres de nous) entre un pauvre petit 48 (malingre) ou un démesuré 72 (qui provoquera un débordement)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 oct. 2011 à 09:17
Bonjour tout le monde
nt
ta proposition peut servir de base
mais je pense qu'il y a aussi le coté acculaire on est pas obligé d'atteindre la condition
until > l
il se peut que lors de la boucle x (font size)
correspond à la demande
donc le mieux serait avec une loop et option
de sortir de la loop

ça rappelle quand l'élève va au tableau
il écrit de la meme taille habitué sur sa feuille
et tous les autres essayent de déchiffrer
les gribouillies
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 oct. 2011 à 09:31
correction
à la place de
tt

Bonjour Banana32
0
Utilisateur anonyme
12 oct. 2011 à 19:43
Bonsoir ucfoutu,
Imagine maintenant que la police n'ait rien de prévu entre les taille 24 et 50

Absolument exact!
Je me demande ce qui se produit lorsqu'on demande une taille qui n'existe pas.
Il y a aussi des polices complètement illisibles en grandes tailles (pixelisation) comme Courier New par exemple.
Bref, encore un casse-tête.
Merci de ta remarque ucfoutu

Bon courage ShayW, tu nous prépares une petite surprise ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 oct. 2011 à 20:23
Je me demande ce qui se produit lorsqu'on demande une taille qui n'existe pas.

Tu découvriras en testant que, dans la grande majorité des cas ( tous en fait ), la dernière taille "acceptée" prévaudra.
Je crains fort que notre ami ShayW n'ait en effet à envisager de "changer son fusil d'épaule".
Et j'ose à peine parler du reste (les menus, par exemple, et surtout s'ils occupent déjà toute la largeur en mode création).
Et c'est très très très loin d'être TOUT.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 oct. 2011 à 20:27
Allons : un autre exemple : les bordures (leur épaisseur) est déterminée dans systemmetrics et leur épaisseur n'est pas modifiable sauf à (ô sacrilège) modifier la configuration de Windows.
etc.. etc...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
12 oct. 2011 à 20:36
Je ne connaissais pas ces fameux "resizers" merci pour l'info
0
Rejoignez-nous