2010-06-22 41 views
22

Tôi có StackPanel chứa năm hình ảnh và tôi muốn đặt đường viền màu đen xung quanh mỗi hình ảnh.Làm cách nào để đặt đường viền xung quanh hình ảnh trong WPF?

Các XAML Tôi có vào lúc này là:

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

tôi nghĩ rằng tôi sẽ chỉ có thể đặt một lề một đơn vị hoặc đệm vào hình ảnh và thiết lập một màu nền để 000000 nhưng PaddingBackground cả hai đều không hợp lệ cho hình ảnh.

Cách dễ dàng để thực hiện việc này trong XAML là gì? Tôi có thực sự phải đặt mỗi hình ảnh trong một điều khiển khác để có được một đường viền xung quanh nó hay là có một số thủ thuật khác mà tôi có thể sử dụng?

Trả lời

49

Đơn giản chỉ cần quấn hình ảnh trong một điều khiển Border

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

Bạn cũng có thể cung cấp một phong cách bạn áp dụng đối với hình ảnh mà thực hiện điều này nếu bạn không muốn làm điều đó trên mỗi hình ảnh


Giải pháp cuối cùng từ câu trả lời và nhận xét được thêm bởi Pax:

<Border BorderThickness="1" 
     BorderBrush="#FF000000" 
     VerticalAlignment="Top"> 
    <Image Name="imgPic1" 
      Width="100" 
      Height="75" 
      Stretch="Fill" 
      VerticalAlignment="Top"/> 
</Border> 
+0

Điều đó có vẻ tốt nhưng làm cách nào để tô màu đen? Thiết lập nền ảnh hưởng đến không gian xung quanh biên giới, không phải là biên giới chính nó, và không có màu hoặc tài sản Foreground. – paxdiablo

+0

Bạn phải sử dụng thuộc tính BorderBrush. Bạn có thể chỉ định một màu hex ở đó hoặc bạn có thể chỉ định một bàn chải phức tạp hơn. Nếu bạn muốn nó có màu đen, nó sẽ là BorderBrush = "# FF000000" –

+0

Cảm ơn vì điều đó, Craig. Nó hoạt động tốt ngay bây giờ. – paxdiablo

2

Tôi chỉ tình cờ gặp bài đăng này và câu trả lời khác không hoạt động đúng. Có lẽ vì bây giờ tôi sử dụng khung 4 và bài đăng này cũ?

Trong mọi trường hợp - nếu ai đó sẽ thấy điều này một cách tình cờ trong tương lai - đây là câu trả lời của tôi:

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

Độ dày biên giới và bàn chải rất quan trọng (nếu bạn sẽ không chọn một màu - bạn sẽ không thấy đường viền !!!)

Ngoài ra, đường viền phải được căn chỉnh trên cửa sổ của bạn. Hình ảnh là "bên trong" biên giới, vì vậy bạn có thể sử dụng lề hoặc chỉ kéo dài nó như tôi đã làm.

+0

Cảm ơn bài đăng của bạn! Vui lòng không sử dụng chữ ký/khẩu hiệu trong bài đăng của bạn. Hộp người dùng của bạn được tính là chữ ký của bạn và bạn có thể sử dụng tiểu sử của mình để đăng bất kỳ thông tin nào về bản thân bạn muốn. [Câu hỏi thường gặp về chữ ký/khẩu hiệu] (http://stackoverflow.com/faq#signatures) –

Các vấn đề liên quan