2009-06-23 3 views
2

Ich schreibe einen Pinsel in XAML, die ich verwenden kann, um den Hintergrund einer Grid zu malen, um ein Banner zu erstellen. Es sieht wie folgt aus:Verhindern von Deformation in XAML Grid Hintergrund beim Ändern der Größe

An example of the brush applied to the background of a Grid http://i40.tinypic.com/8wl012.png

ich den Pinsel zu „strecken“ wollen mit dem Grid, wenn die Window ändert die Größe, aber ich will nicht das Zentrum zu verformen Winkeln.

The deformed background brush http://i39.tinypic.com/2nly98p.png

Ich brauche nur in der Lage sein, die Formen im Hintergrund eines Grid zu ziehen. Wie kann ich die Verformung vermeiden?

Der Code, den ich geschrieben habe, sieht wie folgt aus:

<Window x:Class="WpfApplication.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="60" Width="300"> 
    <Window.Resources> 
     <DrawingBrush x:Key="GridBackground"> 
      <DrawingBrush.Drawing> 
       <DrawingGroup> 
        <DrawingGroup.Children> 
         <GeometryDrawing Geometry="M0,1 0,0 0.4,0 0.45,0.5 0.4,1Z" Brush="#FF6A00" /> 
         <GeometryDrawing Geometry="M0.6,1 0.55,0.5 0.6,0 1,0 1,1Z" Brush="#FF0000" /> 
        </DrawingGroup.Children> 
       </DrawingGroup> 
      </DrawingBrush.Drawing> 
     </DrawingBrush> 
    </Window.Resources> 
    <Grid Background="{StaticResource GridBackground}"> 
     <TextBlock Foreground="White" VerticalAlignment="Center">Some text</TextBlock> 
    </Grid> 
</Window> 

Antwort

0

Ich würde es zwei Bürsten machen, eine rechts verankert, und ein nach links verankert. Etwas wie folgt aus:

<Grid> 
    <GeometryXXX Geometry="M0,1 0,0 0.4,0 0.45,0.5 0.4,1Z" Width="300" HorizontalAlignment="Left" Brush="#FF6A00"> 
    <GeometryXXX Geometry="M0,1 0,0 0.4,0 0.45,0.5 0.4,1Z" Width="300" HorizontalAlignment="Right" Brush="#FF0000"> 
    <TextBlock Foreground="White" VerticalAlignment="Center">Some text</TextBlock> 
</Grid> 

Ich habe nicht mein Compiler offen, und ich kann mich nicht erinnern, den Namen des Geometrie-Zeichenobjekt.

Der andere Weg, es zu tun einen Valueconverter zu schaffen wäre, und so etwas wie:

... 
    <GeometryDrawing Geometry="{Binding Width, ValueConverter=LeftAngledThing}" Brush="#FF6A00" /> 
    <GeometryDrawing Geometry="{Binding Width, ValueConverter=LeftAngledThing}" Brush="#FF0000" /> 
... 

Sie würden nachschlagen müssen, um die genaue Syntax, wie dies obwohl zu tun, da ich nicht tun Erinnere dich jetzt daran.

+0

Es ist wichtig, dass sich die Formen im Hintergrund des Rasters befinden. Die einzige Änderung, die ich am Grid selbst vornehmen möchte, ist das Hinzufügen des Hintergrundattributs. –

Verwandte Themen