2008-11-06 12 views
6

Establecí un fondo de lienzo en una imagen del logotipo de una empresa. Me gustaría que esta imagen se alinee con la esquina inferior derecha del lienzo.
¿Es posible hacer esto o requerirá que la imagen se agregue al lienzo como un elemento secundario? Eso no funcionaría con este programa ya que todos los niños del lienzo se manejan de manera diferente.¿Cómo se puede alinear un fondo de lienzo en WPF?

Gracias

Respuesta

16

¿Funciona? (Funcionó para mí, de todos modos.)

<Canvas> 
    <Canvas.Background> 
     <ImageBrush ImageSource="someimage.jpg" AlignmentX="Right" 
      AlignmentY="Bottom" Stretch="None" /> 
    </Canvas.Background> 
    </Canvas> 
+0

Exactamente lo que necesitaba. Revisé todas las propiedades de ImageBrush, pero de alguna manera las eché de menos. ¡Gracias! – Totty

+0

gracias! ¡gracias! – Fredrik

0

necesita que yo sepa El FPM lienzo elementos de la interfaz niño a ser colocados utilizando coordenadas absolutas. Para lograr el efecto anclado en el extremo derecho, creo que necesitaría manejar el evento de cambio de tamaño de la ventana, recalcular y aplicar las coordenadas Superior, Izquierda para el elemento Imagen infantil para pegar siempre en la esquina inferior derecha.

<Window x:Class="HelloWPF.Window1" xmlns... 
    Title="Window1" Height="300" Width="339"> 
    <Canvas> 
     <Image Canvas.Left="195" Canvas.Top="175" Height="87" Name="image1" Stretch="Fill" Width="122" Source="dilbert2666700071126ni1.gif"/> 
    </Canvas> 
</Window> 
+0

Bueno, sí y no. La solución que estoy buscando alteraría la imagen Canvas.Background para que se coloque de manera diferente. No es un niño del lienzo. Además, creo que la manera más fácil de manejar al niño a medida que describe sería establecer Canvas.Bottom y Canvas.Right en 0. No es necesario actualizar en ese momento. – Totty

+0

Correcto, eres ... Las propiedades adjuntas son un dolor para recordar ... así que ahora cada niño tiene Anchura y altura + 4 accesorios adjuntos para el lienzo llamados Arriba, Izquierda, Inferior y Derecha ... ¡sheesh! :) – Gishu

0

¿Qué le parece si contiene el lienzo y la imagen dentro de un control de cuadrícula?

<Window ...> 
    <Grid> 
    <Canvas/> 
    <Image HorizontalAlignment="Right" VerticalAlignment="Bottom" .../> 
    <Grid> 
</Window> 
0

Esta es mi solución utilizando un borde dentro del lienzo para alinear la imagen. Esta solución funciona bien cuando se cambia el tamaño del lienzo:

<Canvas x:Name="MiCanvas" Height="250" Width="500" Background="Aqua"> 
    <Border x:Name="MiBorderImage" 
      Width="{Binding ElementName=MiCanvas, Path=ActualWidth}" 
      Height="{Binding ElementName=MiCanvas, Path=ActualHeight}" 
      Background="Transparent"> 
     <Image x:Name="MiImage" Source="/GraphicsLibrary/Logos/MiLogo.png" 
       HorizontalAlignment="Right" 
       VerticalAlignment="Bottom" 
       Stretch="None" /> 
    </Border> 
</Canvas> 
Cuestiones relacionadas