Come è possibile allineare uno sfondo di tela in WPF?
Domanda
Ho impostato uno sfondo di tela su un'immagine del logo di una società. Vorrei che questa immagine fosse allineata all'angolo in basso a destra della tela.
È possibile farlo o richiederebbe che l'immagine venga aggiunta alla tela da bambina? Ciò non funzionerebbe con questo programma poiché tutti i bambini della tela sono gestiti in modo diverso.
Grazie
Soluzione
Funzionerà? (Ha funzionato per me, comunque.)
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="someimage.jpg" AlignmentX="Right"
AlignmentY="Bottom" Stretch="None" />
</Canvas.Background>
</Canvas>
Altri suggerimenti
AFAIK La tela WPF ha bisogno di posizionare elementi dell'interfaccia utente figlio usando coordinate assolute. Per ottenere l'effetto ancorato in basso a destra, penso che dovresti gestire l'evento di ridimensionamento della finestra, ricalcolare e applicare le coordinate Superiore, Sinistra affinché l'elemento Immagine figlio si attenga sempre al angolo in basso a destra.
<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>
Che ne dici di contenere la tela e l'immagine all'interno di un controllo Grid in questo modo?
<Window ...>
<Grid>
<Canvas/>
<Image HorizontalAlignment="Right" VerticalAlignment="Bottom" .../>
<Grid>
</Window>
Questa è la mia soluzione usando un bordo all'interno dell'area di disegno per allineare l'immagine. Questa soluzione funziona bene quando la tela viene ridimensionata:
<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>