2008-11-06 8 views
6

J'ai mis un fond de toile à une image d'un logo d'entreprise. Je voudrais que cette image soit alignée dans le coin inférieur droit de la toile.
Est-il possible de faire cela, ou aurait-il besoin pour l'image à ajouter dans la toile comme un enfant? Cela ne fonctionnerait pas avec ce programme car tous les enfants de la toile sont traités différemment.Comment pouvez-vous aligner un fond de toile dans WPF?

Merci Vous

Répondre

16

Est-ce que cela fonctionnera? (Il a travaillé pour moi, de toute façon.)

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

Exactement ce dont j'avais besoin. J'ai regardé à travers toutes les propriétés pour ImageBrush, mais d'une manière ou d'une autre j'ai raté ceux-ci. Merci! – Totty

+0

merci! Je vous remercie! – Fredrik

0

Le WPF AFAIK Canvas a besoin d'éléments de l'interface utilisateur de l'enfant à être positionnés en utilisant les coordonnées absolues. Pour obtenir l'effet d'ancrage inférieur droit, je pense que vous devez gérer l'événement de redimensionnement de la fenêtre, recalculer et appliquer les coordonnées Top, Left pour que l'élément Image enfant reste toujours dans le coin droit.

<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

Eh bien, oui et non. La solution que je cherche altérerait l'image de Canvas.Background à positionner différemment. Pas un enfant de la toile. Aussi, je crois que le moyen le plus simple de gérer l'enfant comme vous le décrivez serait de mettre Canvas.Bottom et Canvas.Right à 0. Pas besoin de mettre à jour alors. – Totty

+0

Droit vous êtes .. Les propriétés attachées sont une douleur à retenir .. alors maintenant chaque enfant a Largeur et hauteur + 4 accessoires attachés pour la toile nommée Top, Left, Bottom and Right ... sheesh! :) – Gishu

0

Que diriez-vous de contenir le canevas et l'image à l'intérieur d'un contrôle de grille comme ça?

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

Ceci est ma solution à l'aide d'une frontière à l'intérieur de la toile 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> 
Questions connexes