2010-06-22 4 views
22

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

Часть XAML у меня есть на данный момент:

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

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

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

ответ

49

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

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

Это хорошо выглядит, но как я могу сделать его черным? Установка фона влияет на пространство вокруг границы, а не на самой границе, и нет свойства «Цвет» или «Передний план». – paxdiablo

+0

Вы должны использовать свойство BorderBrush. Вы можете указать там шестнадцатеричный цвет или задать более сложную кисть. Если вы хотите, чтобы он был черным, это было бы BorderBrush = "# FF000000" –

+0

Спасибо за это, Крейг. Теперь он отлично работает. – paxdiablo

2

Я просто наткнулся на этот пост и другой ответ не работает правильно. Может быть, потому, что теперь я использую фреймворк 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> 

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

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

+0

Спасибо за сообщение! Пожалуйста, не используйте подписи/метки в своих сообщениях. Ваш ящик пользователя считается вашей подписью, и вы можете использовать свой профиль для публикации любой информации о себе, как вам нравится. [Часто задаваемые вопросы о подписках/тегах] (http://stackoverflow.com/faq#signatures) –

Смежные вопросы