2012-06-13 25 views
5

Quiero dibujar algunos Rectangle sobre un solo Image.Dibujar rectángulo sobre la imagen

Por ejemplo, he siguiente (blanco y negro) Perfil de la nave, y quiero añadir algunos rectángulos (amarillo y rojo) a lo largo de este perfil en lugares específicos:

enter image description here

¿Es posible? ¿Cómo puedo hacer esto?

Respuesta

9

Es muy posible que, si conoce la x, y, el ancho y la altura de las áreas que desea resaltar, puede colocar todos los controles en un lienzo.

Puede establecer las propiedades de los rectángulos en código detrás de la siguiente manera:

Rectangle rectangle = new Rectangle(); 
rectangle.SetValue(Canvas.LeftProperty, 10); 
rectangle.SetValue(Canvas.TopProperty, 10); 
rectangle.Width = 1000; 
rectangle.Height = 50; 
rectangle.Fill = new SolidColorBrush() { Color = Colors.Red, Opacity = 0.75f }; 

canvas.Children.Add(rectangle); 

y si desea añadirlos en XAML puede de esta manera.

<Canvas> 
    <Image Source="..."/> 
    <Rectangle Canvas.Left="10" Canvas.Top="10" Width="1000" Height="50"> 
     <Rectangle.Fill> 
      <SolidColorBrush Color="Red" Opacity="0.75"/> 
     </Rectangle.Fill> 
    </Rectangle>       
</Canvas> 
+1

También querrá hacer el color con transparencia. – kenny

+0

@kenny sí ¿es posible? – Nick

+0

He actualizado la respuesta con C# y XAML para hacer que la redecilla sea roja y ligeramente transparente. – Andy

1

Prueba esto también te ayudará.

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="Multi_Textbox.Window1" 
x:Name="Window" 
Title="Window1" 
Width="640" Height="480"> 

<Grid x:Name="LayoutRoot"> 
    <Image Margin="104,50,75,99" Source="barkship.jpg"/> 
    <Rectangle Fill="#FF28B0DE" HorizontalAlignment="Left" Height="17.334" Margin="212,0,0,111.333" Stroke="Black" VerticalAlignment="Bottom" Width="99.667"/> 
    <TextBlock HorizontalAlignment="Left" Height="11" Margin="230.667,0,0,115" TextWrapping="Wrap" Text="CHANDRU" VerticalAlignment="Bottom" Width="63.333" Foreground="White"/> 
</Grid> 

Es una salida como ésta

Result

+0

La ironía es fuerte en esta +1 – sam

Cuestiones relacionadas