2009-10-01 9 views
6

W moim projekcie chcę wyświetlić małe logo z boku niestandardowego formantu. Ponieważ nie mam płótna, pomyślałem, że może wizualny pędzel byłby dobrym pomysłem umieszczenia logo w tle.WPF: Pomoc! Visual Brush streches all content

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

Ale prostokąt, którego teraz używam, nie jest 200x200. Zajmuje całą dostępną przestrzeń. To nie jest to, czego chcę. Próbowałem również Viewbox i ustawiłem właściwość stretch, ale wynik jest taki sam, ponieważ w końcu nie potrzebuję prostego prostokąta, ale płótna z wieloma obiektami ścieżki jako dziećmi. Viewbox obsługuje tylko jedno dziecko.

Czy istnieje sposób na obejście tego problemu?

Odpowiedz

10

Musisz ustawić TileMode, Stretch, AlignmentX i AlignmentY właściwości na VisualBrush:

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

Działa świetnie. Wielkie dzięki. – TalkingCode

+0

dzięki, że brakowało mi TileMode = "None" i Stretch = "None" – juFo

0

Dodaj Siatka i to alligment Set pionie do góry i poziome wyrównanie do prawej kodu Sample

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