2009-06-23 2 views
2

Я пишу кисть в XAML, которую я могу использовать, чтобы нарисовать фон Grid, чтобы создать баннер. Это выглядит следующим образом:Предотвращение деформации в фоне XAML Grid при изменении размера

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

Я хочу, чтобы кисть «растянуть» с Grid когда Window изменяет размер, но я не хочу, углы центра деформироваться.

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

Мне нужно, чтобы иметь возможность рисовать фигуры в фоне Grid только. Как я могу избежать деформации?

Код я написал выглядит следующим образом:

<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> 

ответ

0

Я хотел бы сделать это два кисти, один якорь вправо, и один якорь налево. Что-то вроде этого:

<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> 

Я не мой компилятор открытым, и я не помню имя геометрии чертежа объекта.

Другой способ сделать это было бы создать ValueConverter, и сделать что-то вроде:

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

Вам будет нужно искать точный синтаксис для того, как сделать это, хотя, как и я не помните это прямо сейчас.

+0

Важно, чтобы фигуры находились на фоне сетки. Единственное изменение, которое я хочу сделать для самой сетки, - это добавить атрибут Background. –

Смежные вопросы