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

Silverlight Discussion :

[Silverlight3]Calcul de la FontSize en fonction de la Width


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 156
    Par défaut [Silverlight3]Calcul de la FontSize en fonction de la Width
    Bonjour,

    J'aimerais calculer la FontSize maximum pour une police donnée sachant que le texte serait toujours de 4 caractères et ne devrait pas excéder une largeur et une hauteur fixé.

    Y a t'il une classe dans Silverlight qui permet de faire ça, ou un moyen de faire ça?


    Je ne peux pas utiliser de ViewBox car j'ai besoin que tous mes canvas aient exactement la même taille de texte.

    Merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Par défaut
    Tu veux dire adapter la font size aux dimensions de son conteneur ?

    si c'est la cas, ajoute l'événement SizeChanged sur l'objet (ou son conteneur...)
    ainsi : SizeChanged="Object_SizeChanged"

    puis dans ton code behind (en c#, pour un grid contenant des titres en TextBlock par exemple) :

    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
     
    private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        Grid GD = sender as Grid;
        if (GD.ActualWidth < 700)
        {
            Title1.FontSize = 20;
            Title1.Height = 36;
            Title2.FontSize = 18;
            Title2.Margin = new Thickness(0, 34, 0, 0);
        }
        else
        {
            ...etc.
        }
    }
    ou un calcul savant proportionnel à la width du conteneur... (saisie sans vérification aucune !) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        Grid GD = sender as Grid;
        Title1.FontSize = GD.ActualWidth/30;
        Title1.Height = GD.ActualHeight-20;
        Title1.Margin = new Thickness(0, 10, 0, 10);
    }
    je m'égare ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 156
    Par défaut
    Bonjour, ce n'est pas au size changed que mes conteneurs de texte changent.

    Voila une autre solution qui marche bien mais un peu lente...

    Je vais me pencher sur ton code il sera peut être plus rapide.
    Code C# : 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
    double CalcMaxSize(int numberChar, double width, double heightRoom)
    {
                var tb = new TextBlock();
                double size = 1;
                for (var i = 0; i < numberChar; i++)
                    tb.Text += "Z";
                //tb.Width = width;
                tb.Height = heightRoom;
                while (true)
                {
                    tb.FontSize = size;
                    if (tb.ActualWidth > width)
                    {
                        size -= 0.1;
                        return size;
                    }
                    if(tb.ActualHeight > heightRoom)
                    {
                        size -= 0.1;
                        return size;
                    }
                    size += 0.1;
                }
    }

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

Discussions similaires

  1. Calcul de charge méthode point fonction
    Par stigmate101 dans le forum Gestion de projet
    Réponses: 4
    Dernier message: 30/01/2009, 11h54
  2. calculer les racines d'une fonction
    Par carole8 dans le forum C
    Réponses: 18
    Dernier message: 06/12/2006, 00h14
  3. Calcul d'un prix en fonction de sa composition
    Par prophete3d dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/09/2006, 10h27
  4. Article : Calcul d'un prix en fonction de sa composition
    Par prophete3d dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/09/2006, 10h04
  5. codage du calcul de dérivée d'une fonction mathématique
    Par pispa2005 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 08/01/2005, 20h54

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