2009-10-01 11 views
6

Dans mon projet, je veux afficher un petit logo sur le côté d'un contrôle personnalisé. Comme je n'ai pas de toile, je pensais que peut-être un pinceau visuel serait une bonne idée pour placer le logo en arrière-plan.WPF: Aidez-moi! Visual Brush étend tout le contenu

<VisualBrush> 
    <VisualBrush.Visual> 
     <Rectangle Width="200" Height="200" Fill="Red" /> 
    </VisualBrush.Visual>     
</VisualBrush> 

Mais le rectangle que j'utilise actuellement n'est pas 200x200. Il prend l'espace disponible complet. Ce n'est pas ce que je veux. J'ai aussi essayé une Viewbox et défini la propriété stretch, mais le résultat est le même car à la fin je n'ai pas besoin d'un simple Rectangle mais d'un canvas avec beaucoup d'objets path comme des enfants. Une Viewbox ne prend en charge qu'un seul enfant.

Y at-il un moyen de contourner ce problème?

Répondre

10

Vous devez définir TileMode, Stretch, AlignmentX et AlignmentY propriétés sur votre VisualBrush:

<VisualBrush TileMode="None" Stretch="None" AlignmentX="Left" AlignmentY="Top"> 
    <VisualBrush.Visual> 
     <Rectangle Height="200" Width="200" Fill="Red"></Rectangle> 
    </VisualBrush.Visual> 
</VisualBrush> 
+0

Fonctionne parfaitement. Merci beaucoup. – TalkingCode

+0

merci il me manquait le TileMode = "None" et Stretch = "None" – juFo

0

Ajouter la grille et cet ensemble vertical alligment en haut et alignement horizontal à droite Exemple de code

<VisualBrush x:Key="myVisual"> 
     <VisualBrush.Visual> 
      <Grid> 
       <Rectangle Height="200" Width="200" Fill="Red" HorizontalAlignment="Right" VerticalAlignment="Top" ></Rectangle> 
      </Grid> 
     </VisualBrush.Visual> 
    </VisualBrush> 
Questions connexes