Comment aligner un arrière-plan de toile dans WPF?
Question
J'ai défini un fond de canevas sur l'image du logo d'une société. J'aimerais que cette image soit alignée sur le coin inférieur droit de la toile.
Est-il possible de faire cela, ou faudrait-il que l'image soit ajoutée à la toile en tant qu'enfant? Cela ne fonctionnerait pas avec ce programme car tous les enfants de la toile sont gérés différemment.
Merci
La solution
Cela fonctionnera-t-il? (Cela a fonctionné pour moi, de toute façon.)
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="someimage.jpg" AlignmentX="Right"
AlignmentY="Bottom" Stretch="None" />
</Canvas.Background>
</Canvas>
Autres conseils
Remarquez que le canevas WPF a besoin que des éléments d'interface utilisateur enfants soient positionnés à l'aide de coordonnées absolues. Pour obtenir l'effet d'ancrage en bas à droite, je pense que vous devez gérer l'événement de redimensionnement de la fenêtre, recalculer et appliquer les coordonnées Haut, Gauche pour que l'élément Image enfant se colle toujours à l'élément. coin droit du bas.
<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>
Que diriez-vous de contenir le canevas et l'image à l'intérieur d'un contrôle Grid de la même manière?
<Window ...>
<Grid>
<Canvas/>
<Image HorizontalAlignment="Right" VerticalAlignment="Bottom" .../>
<Grid>
</Window>
Voici ma solution en utilisant une bordure à l'intérieur du canevas pour aligner l'image. Cette solution fonctionne bien lorsque le canevas est redimensionné:
<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>