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

Windows Presentation Foundation Discussion :

Entourer du texte avec une bordure


Sujet :

Windows Presentation Foundation

  1. #1
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut Entourer du texte avec une bordure


    Encore moi ...
    Je souhaite faire une chose extrêmement simple : écrire du texte en blanc avec une bordure noire.

    Comment faire ? (j'ai honte ...)

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
        <Label Content="texte" Foreground="White" BorderBrush="Black" BorderThickness="1" />

  3. #3
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Non c'est pas ça que je veux faire, voici ce que je veux (pièce jointe). Le texte est noir et entouré en rouge. Je cherche à faire le même effet en WPF ...
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Comme tu avais dit que tu voulais faire quelque chose d'extrêmement simple

    Pour le coup, je ne sais pas si WPF propose un truc tout fait pour ça...

    Ça doit être faisable en utilisant un BitmapEffect (mais les BitmapEffect ne sont pas trop recommandé).

    Sinon la bonne vielle méthode de superposition de deux TextBlock avec un léger scale sur le TextBlock inférieur

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    La superposition donne un truc affreux, même avec Paint c'est plus beau
    Sinon j'ai pondu ça :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <TextBlock FontSize="14" Foreground="White" Margin="2,0,0,2">                                
                                    <ContentPresenter></ContentPresenter>
                                    <TextBlock.BitmapEffect>
                                        <OuterGlowBitmapEffect GlowColor="Black" GlowSize="4"
                                                               Noise="0"
                                                               Opacity="1"/>
                                    </TextBlock.BitmapEffect>
                                </TextBlock>
    mais bon, c'est toujours pas exactement ce que je veux

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Ouep j'ai essayer, en jouant un peu sur le GlowSize et en mettant la valeur à 1, c'est un peu plus ce que tu veux

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut
    Tu ne peux pas redéfinir le OuterGlowBitmapEffect et supprimer le flou ?

  8. #8
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par Nalfeim Voir le message
    Tu ne peux pas redéfinir le OuterGlowBitmapEffect et supprimer le flou ?
    cad ?

  9. #9
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Bonjour,

    Je ne sais pas si c'est possible directement à partir du texte, mais en le convertissant en Geometry, je sentais bien qu'on pouvait en faire quelque chose.

    je te poste un exemple, ça peut te donner des idées.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut
    Désolé. Par redéfinir j'entend créer un ControlTemplate adapté à tes besoins (ie sans flou) à partir de l'original.
    Note que je en sais pas si c'est faisable pour le OuterGlowBitmapEffect, mais c'est comme ça que je procède à chaque fois qu'un élément graphique me résiste ^^

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Citation Envoyé par Nalfeim Voir le message
    Désolé. Par redéfinir j'entend créer un ControlTemplate adapté à tes besoins (ie sans flou) à partir de l'original.
    Note que je en sais pas si c'est faisable pour le OuterGlowBitmapEffect, mais c'est comme ça que je procède à chaque fois qu'un élément graphique me résiste ^^
    OuterGlowBitmapEffect n'étant un contrôle, définir un ControlTemplate dessus n'est pas faisable.


    Thrud : Je ne connaissais pas, sympa

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 196
    Par défaut
    Citation Envoyé par binoo Voir le message
    OuterGlowBitmapEffect n'étant un contrôle, définir un ControlTemplate dessus n'est pas faisable.
    Naif Inside. Ca m'évitera d'essayer alors

  13. #13
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Mince, je suis embêté pour utiliser le code de Thrud : au départ j'ai juste une image et un tooltip et c'est via un Style que je faisait le tout. On peut peut pas créer du code derrière un Style ?
    En fait, j'ai ça :
    Code xml : 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
     
    <Style x:Key="ImageItemToolTipStyle" TargetType="{x:Type ToolTip}">
                <Setter Property="Placement" Value="Top"/>
                <Setter Property="PlacementRectangle" Value="-5,-50,0,0"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ToolTip}">
                            <Grid Width="{TemplateBinding Width}" Height="30">
                                <TextBlock FontSize="14" Foreground="White" Margin="2,0,0,2">                                
                                    <ContentPresenter></ContentPresenter>
                                    <TextBlock.BitmapEffect>
                                        <OuterGlowBitmapEffect GlowColor="Black" GlowSize="4"
                                                               Noise="0"
                                                               Opacity="1"/>
                                    </TextBlock.BitmapEffect>
                                </TextBlock>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    Comment je me débrouille pour utiliser le code ?

  14. #14
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    euh, ça marche en passant par un convertisseur, je sais pas si c'est la meilleure façon de faire :

    j'ai modifi& ton style comme ça, je vire le ContentPresenter et le TextBlock avec l'effet, et je les remplace par un Path.

    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
     
            <local:StringToPathConverter x:Key="stringToPathConverter" />
     
            <Style TargetType="{x:Type ToolTip}">
                <Setter Property="Placement" Value="Top"/>
                <Setter Property="PlacementRectangle" Value="-5,-50,0,0"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ToolTip}">
                            <Grid Width="{TemplateBinding Width}" Height="30">
                                <Path Fill="White" Stroke="Black" Data="{TemplateBinding Content, Converter={StaticResource stringToPathConverter}}">
                                </Path>
                                <!--<TextBlock FontSize="14" Foreground="White" Margin="2,0,0,2">                                
                                    <ContentPresenter></ContentPresenter>
                                    <TextBlock.BitmapEffect>
                                        <OuterGlowBitmapEffect GlowColor="Black" GlowSize="4"
                                                               Noise="0"
                                                               Opacity="1"/>
                                    </TextBlock.BitmapEffect>
                                </TextBlock>-->
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    et ajoute une classe StringToPathConverter

    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
     
    using System;
    using System.Globalization;
    using System.Windows;
    using System.Windows.Data;
    using System.Windows.Media;
     
    namespace TestTextGeometry
    {
        class StringToPathConverter : IValueConverter
        {
            #region IValueConverter Members
     
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                String strText = value as String;// "Text to display";
                if (strText != null)
                {
                    FormattedText oText = new FormattedText(strText, CultureInfo.GetCultureInfo("fr-fr"), FlowDirection.LeftToRight, new Typeface("Comic sans MS"), 25, Brushes.Black);
     
                    return oText.BuildGeometry(new Point(0, 0));
                }
     
                return null;
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
     
            #endregion
        }
    }
    bon, dans mon programme de test, ça s'affiche pas vraiment sur le label, mais ça, c'est du réglage.

  15. #15
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Cool, za marze !
    Un grand à toi, Thrud

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

Discussions similaires

  1. Comment parcourir un fichier texte avec une boucle ?
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 18h13
  2. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 22h23
  3. Centrage de texte avec une image en arriere plan
    Par MasterOfChakhaL dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/08/2005, 19h31
  4. Réponses: 3
    Dernier message: 21/06/2005, 12h37
  5. Réponses: 4
    Dernier message: 25/04/2005, 20h36

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