Как поместить рамку вокруг изображения в WPF? - PullRequest
25 голосов
/ 22 июня 2010

У меня есть StackPanel, содержащий пять изображений, и я хочу поставить черную рамку вокруг каждого изображения.

XAML, который у меня есть на данный момент:

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

Я думалЯ мог бы просто добавить на изображение поле или отступ в одну единицу и установить цвет фона 000000, но Padding и Background недопустимы для изображений.

Что легкоспособ сделать это в XAML?Действительно ли мне нужно помещать каждое изображение в другой элемент управления, чтобы обвести вокруг него границы, или я могу использовать еще одну хитрость?

Ответы [ 3 ]

57 голосов
/ 22 июня 2010

Просто оберните изображение в элемент управления Border

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

Вы также можете предоставить стиль, который вы применяете к изображениям, который делает это, если вы не хотите делать это вокруг каждого изображения


Окончательное решение от ответа и комментариев, добавленных Pax:

<Border BorderThickness="1"
        BorderBrush="#FF000000"
        VerticalAlignment="Top">
    <Image Name="imgPic1"
           Width="100"
           Height="75"
           Stretch="Fill"
           VerticalAlignment="Top"/>
</Border>
3 голосов
/ 26 февраля 2013

Я просто наткнулся на этот пост, и другой ответ не работает правильно.Может быть, потому что я сейчас использую framework 4, а этот пост старый?

В любом случае - если кто-то увидит это случайно в будущем - вот мой ответ:

 <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>

Границаважны толщина и кисть (если вы не выберете цвет - вы не увидите границы !!!)

Кроме того, граница должна быть выровнена на вашем окне.Изображение находится «внутри» границы, поэтому вы можете использовать поля или просто растянуть его, как я.

1 голос
/ 25 января 2017

Принятый ответ не будет работать из-за проблемы, описанной здесь https://wpf.2000things.com/2011/04/17/279-adding-a-border-around-an-image-control/

Я решил это таким образом.

<Viewbox>
    <Border BorderThickness="3" BorderBrush="Red">
     <Image Stretch="None" ></Image>
    </Border>
   </Viewbox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...