Comment placer une bordure autour d'une image dans WPF?

j'ai un StackPanel contenant cinq images et je veux mettre une bordure noire autour de chaque image.

Le code XAML j'ai en ce moment est:

<Image Name="imgPic1"
       Width="100"
       Height="75"
       Stretch="Fill"
       VerticalAlignment="Top" />

j'ai pensé que je pourrais juste mettre une marge d'une unité ou un rembourrage sur l'image et mettre une couleur de fond à 000000 mais Padding et Background sont invalides pour les images.

Qu'est-ce qu'un moyen facile de faire cela à XAML? Est-ce que je dois vraiment mettre chaque image dans un autre contrôle pour obtenir une frontière autour de lui ou est-il un autre ruse que je peux utiliser?

23
demandé sur paxdiablo 2010-06-22 16:21:41

3 réponses

simplement envelopper l'Image dans un contrôle de Frontière

<Border BorderThickness="1">
    <Image Name="imgPic1"
           Width="100"
           Height="75"
           Stretch="Fill"
           VerticalAlignment="Top" />
</Border>

vous pouvez également fournir un style que vous appliquez aux images qui font cela si vous ne voulez pas le faire autour de chaque image


solution finale de la réponse et des commentaires ajoutés par Pax:

<Border BorderThickness="1"
        BorderBrush="#FF000000"
        VerticalAlignment="Top">
    <Image Name="imgPic1"
           Width="100"
           Height="75"
           Stretch="Fill"
           VerticalAlignment="Top"/>
</Border>
52
répondu Craig Suchanec 2010-06-22 12:48:53

je viens de tombé sur ce post et l'autre réponse ne marche pas droit. Peut-être parce que j'utilise maintenant framework 4 et ce post est vieux?

Dans tous les cas, si quelqu'un va voir ce par hasard dans l'avenir - voici ma réponse:

 <Border Name="brdSiteLogo" 
          BorderThickness="2"
          BorderBrush="#FF000000"
          VerticalAlignment="Top"
          HorizontalAlignment="Left"
          Margin="12,112,0,0"
          Height="128" 
          Width="128">

     <Image Name="imgSiteLogo"             
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         Stretch="Fill"/>

  </Border>

l'épaisseur de la bordure et le pinceau sont importants (si vous ne choisissez pas une couleur - vous ne verrez pas la bordure!!!)

de plus, la bordure doit être alignée sur votre fenêtre. L'image est "à l'intérieur" de la frontière, donc vous pouvez utiliser des marges ou juste l'étirer comme je l'ai fait.

2
répondu Guy Cohen 2013-02-26 05:37:02

la réponse acceptée ne fonctionnera pas à cause du problème décrit ici https://wpf.2000things.com/2011/04/17/279-adding-a-border-around-an-image-control/

je l'ai résolu de cette façon.

<Viewbox>
    <Border BorderThickness="3" BorderBrush="Red">
     <Image Stretch="None" ></Image>
    </Border>
   </Viewbox>
0
répondu Andreas 2017-01-25 16:27:34